• [织梦吧]唯一域名:www.dedecms8.com,织梦DedeCMS学习平台.

当前位置: > 编程与数据库 > DB2教程 >

DB2数据库性能调优10条(3)

来源: www.dedecms8.com 编辑:织梦吧 时间:2012-09-04点击:
 
太小的buffer pool 会导致大量的、不必要的物理I/O。太大的biffer pool有可能会产生系统paging,增加不必要的CPU管理内存开销。
buffer pool的大与小是相对的,一个系统的buffer pool大小应该"合适的"!当达到diminishing return达到时,就是合适的。如果不是使用自动工具,应该有条理的测试buffer pool性能,比如命中率,I/O次数,物理I/O读的比率,直到达到合适状态。当然,应用是变化的,所以最优状态不是不边的,也是要定期的评估。
 
 
1. SQL COST ANALYSIS
 
很多时候,一个简单的SQL就可能让DB2系统处于难堪的状态。这不是调整DB参数就能解决的。DBA很难去改变这些垃圾SQL,所以留给DBA的就是
1). Change or add indexes
2). Change clustering
3). Change catalog statistics.
 
一个SQL语句的cost= 每次执行的资源代价 *执行的次数
DBA面临的挑战就是要找到那些有很高cost的语句,并努力去减少它的代价。可以借助DB2 Explain 工具或者DB2 UDB SQL Event Monitor数据来分析SQL语句的代价。尤其是对SQL Event Monitor的数据分析,但这都是很需要耗费很大的精力的事情。
 
一般的DBA的流程是:
1). Create an SQL Event Monitor, write to file:
        $> db2 "create event monitor SQLCOST for statements write to ..."
2). Activate the event monitor (be sure ample free disk space is available):
        $> db2 "set event monitor SQLCOST state = 1"
3). Let the application run.
4). Deactivate the event monitor:
        $> db2 "set event monitor SQLCOST state = 0"
5). Use the DB2-supplied db2evmon tool to format the raw SQL Event Monitor data (hundreds of megabytes of free disk space may be required depending on SQL throughput rates):
        $> db2evmon -db DBNAME -evm SQLCOST
         > sqltrace.txt
6). Browse through the formatted file scanning for unusually large cost numbers, a time-consuming process:
        $> more sqltrace.txt
 
7). Undertake a more complete analysis of the formatted file that attempts to identify unique statements (independent of literal values), each unique statement's frequency (how many times it occurred), and the aggregate of its total CPU, sort, and other resource costs. Such a thorough analysis could take a week or more on just a 30-minute sample of application SQL activity.
 
为了尽快的找到相应的SQL,可以考虑前面讲过的一些方法:
针对第4个tip:计算每个交易从一个table里面取出的行数。如果数值很高,就可以找到相应的语句。
 
针对第3个tip:计算每个tablespace的asynchronous read percentage and physical I/O read rates.如果一个tablespace有很高的asynchronous read percentage 和高于平均的physical I/O read rates,那么有可能这个tablesapce里面有table scan情况。从catalog中可以找寻tablespace中相应的table(如果一个tablespace上只有一个表,那么很容易定位了),然后从SQL Event Monitor 中寻找相关的table。这样也能缩小范围。
 
观察 DB2 Explain信息,寻找可疑的地方。有时候,经常执行的、而且是代价比较低的语句也会疯抢系统资源!
 
很多时候,要充分借助工具!这样能省时省力。
 
Staying in Tune
要明白的是,性能优化不单单消除那些好代价的SQL语句,也要保证合理的物理构架,确保高性能的结果、内存分配在pool和heap中,I/O都在DISk之间平衡分布。
标签: db2数据库
猜你也喜欢看这些...

About D8

  • ©2014 织梦吧(d8) DedeCMS学习交流平台
  • 唯一网址 www.DedeCMS8.com 网站地图
  • 联系我们 1170734538@qq.com ,  QQ