LoveUnix » DB2 & Informix » 初级DB2管理员通过简单工具进行性能分析:(上半部分--SQL语句采集)
让LU留住您的每

一天 让LU博客留住您的每一天
2003-10-29 20:36 du2
初级DB2管理员通过简单工具进行性能分析:(上半部分--SQL语句采集)<br /><br />自己刚刚接触DB2数据库不久,<br />通过最近一段时间的使用总结了一点点性能分析的东西,<br />怕自己过段时间就忘了,现在先贴在论坛上,<br />一是方便更多的使用者,二是我今后忘记了来看看也方便,<br />这里很大一部分都是从IBM DEVELOPERWORKS网站摘抄的,<br />我只是把自己的实践经过记录了下来,供大家参考。<br />(由于我的水平有限,所以只能这样简单的把步骤记录下来,还请大家在这方面多多提些建议!!!)<br /><br /><br />性能分析有很多方面,包括在数据库参数、硬件设备调整、还有SQL语句的调整,<br />其中对我们初级人员来说比较困难的就是对SQL语句捕捉与分析,<br />我对SQL语句的分析不在行,就只说一说如何在DB2下捕获执行的SQL语句,<br />对后边的SQL语句分析只能是简单介绍,以下示例都在 DB2 8.1 下测试成功。<br /><br />首先介绍一下环境:<br />生产环境: IBM P670 + AIX 5.2 + DB2 8.1 SP2<br />分析环境: PC机 + Windows 2000 Professional + DB2 8.1 SP2<br /><br />我们捕获SQL语句的前半段工作都是在生产环境下操作的,后半段是在分析环境下操作。<br />一般我们都不会在生产环境下进行分析工作,所以最好还是再找一台PC来进行分析工作。<br /><br />************************************************************************************<br />第一部分:捕获SQL语句<br />************************************************************************************<br /><br />一、首先我们查看当前数据库监控器(monitor switches)打开状态:<br /><br />$db2 get monitor switches<br /><br />            监视器记录开关<br /><br />db 分区号 0 的开关列表<br />缓冲池活动信息        (BUFFERPOOL) = OFF<br />锁信息                    (LOCK) = OFF<br />排序信息                    (SORT) = OFF<br />SQL 语句信息           (STATEMENT) = OFF       //只有个开关是针对纪录SQL语句的。<br />表活动信息                 (TABLE) = OFF<br />获取时间戳记信息(时间戳记)    = ON  10/26/2003 22:17:13.906415<br />工作单元信息                 (UOW) = OFF<br /><br /><br />$<br /><br /><br />二、打开数据库监控器开关:<br /><br />$db2 update monitor switches using statement on<br />DB20000I  UPDATE MONITOR SWITCHES 命令成功完成。<br />$<br />//注意,做这项工作前一定与数据库连接。<br /><br /><br />三、创建监控数据存放目录:(注意一定要有足够使用空间!!!)<br />$mkdir monitordb2<br />$cd monitordb2<br />$pwd<br />/home/db2inst1/monitordb2<br />$<br /><br /><br />四、创建SQL语句事件监视器(db2monitor),记录日志写入&#39;/home/db2inst1/monitordb2&#39;<br />$db2 &quot;creat event monitor db2monitor for statements write to file &#39;/home/db2inst1/monitordb2&#39;&quot;<br />DB20000I  SQL 命令成功完成。<br /><br /><br />五、打开事件监视器(db2monitor)记录状态,开始记录SQL语句事件日志:<br />$db2 set event monitor db2monitor state =1<br />DB20000I  SQL 命令成功完成。<br />$<br /><br />到这一步,我们就可以开始收集执行SQL语句,运行你的业务程序,让它跑起来吧,执行的所有SQL语句都会被记录下来!<br />(一定要注意你系统保留的空间够不够,千万不要把机器撑暴了!!!)<br /><br /><br />六、收集到一定时间后,我们就可以停止纪录SQL语句了:<br />$db2 set event monitor db2monitor state=0<br />DB20000I  SQL 命令成功完成。<br />$db2 terminate<br />DB20000I  TERMINATE 命令成功完成。<br />$<br /><br />现在我们看一下我们收集下来的成果,纪录的SQL日志文件:<br />$pwd<br />/home/db2inst1/monitordb2<br />$ls -all<br />总计 18120<br />drwxr-xr-x   2 db2inst1 db2grp1         256 10月 27 16时57 .<br />drwxr-xr-x  11 db2inst1 db2grp1        4096 10月 27 16时07 ..<br />-rw-r--r--   1 db2inst1 db2grp1     4093490 10月 27 16时55 00000000.evt<br />-rw-r--r--   1 db2inst1 db2grp1     4090432 10月 27 16时57 00000001.evt<br />-rw-r--r--   1 db2inst1 db2grp1     1070982 10月 27 16时57 00000002.evt<br />-rw-r-----   1 db2inst1 db2grp1         300 10月 27 16时57 db2event.ctl<br />$<br />现在生成的这些文件格式不是我们可以看懂的东西,我们还需要通过工具来转换一下。<br />(注意,这些文件千万不要rm之类的方法手工去删除,否则这些文档就不能再用了。可以通过工具来删除。)<br /><br /><br /><br />七、使用db2evmon工具生成可看的文本文件:<br />$pwd<br />/home/db2inst1/monitordb2<br />$db2evmon -path ./ &gt; sqltrace.txt<br /><br />Reading ./00000000.evt ...<br /><br />Reading ./00000001.evt ...<br /><br />Reading ./00000002.evt ...<br />$<br /><br />现在我们就基本上完成了上半部分的工作,收集了SQL语句,<br />并且这时候生成的 sqltrace.txt 文件已经是我们可以看懂的格式了,<br />如果你不嫌麻烦,现在就可以通过看 sqltrace.txt 文件来分析系统中的SQL语句的问题了。<br />不过一般情况下,我们都会收集到几十兆甚至上百兆的信息(这个要看系统执行的SQL频率了),<br />基本上不能分析出什么问题,所以我们还需要进一步工作,把信息进行筛选。

2003-10-29 23:35 燕狂徒
很好,鼓励原创<br />加精,继续努力啊

页: [1]


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.