DB2调优(一)监控执行缓慢的SQL

在DB2调优过程中经常希望能够获取当前生产环境中执行缓慢的sql,获取后可以针对特定慢的sql进行精确调优。以下脚本可以利用,操作还是比较繁琐,需要手动运行。


db2 connect to tablename;

db2 -x "
select current timestamp ||'|'|| stmt_text ||'|'|| member 
||'|'|| NUM_EXEC_WITH_METRICS ||'|'|| TOTAL_ACT_TIME ||'|'|| TOTAL_ACT_WAIT_TIME ||'|'|| TOTAL_CPU_TIME
||'|'|| POOL_READ_TIME ||'|'|| LOCK_WAIT_TIME ||'|'|| TOTAL_SECTION_SORT_TIME ||'|'|| TOTAL_SECTION_SORTS 
||'|'|| ROWS_READ ||'|'|| ROWS_RETURNED ||'|'|| POOL_DATA_L_READS ||'|'|| POOL_TEMP_DATA_L_READS
||'|'|| POOL_INDEX_L_READS ||'|'|| POOL_TEMP_INDEX_L_READS ||'|'|| POOL_DATA_P_READS  
||'|'|| POOL_TEMP_DATA_P_READS ||'|'|| POOL_INDEX_P_READS ||'|'|| POOL_TEMP_INDEX_P_READS  
||'|'|| SORT_OVERFLOWS ||'|'|| TOTAL_SECTION_TIME ||'|'|| TOTAL_SECTION_PROC_TIME 
||'|'|| FCM_RECV_WAIT_TIME ||'|'|| FCM_SEND_WAIT_TIME  
FROM   
  (SELECT * FROM TABLE(MON_GET_PKG_CACHE_STMT(NULL , NULL, '<modified_within>5</modified_within>',  -2)) 
   WHERE NUM_EXEC_WITH_METRICS > 0 AND TOTAL_ACT_WAIT_TIME> 5000) 
WHERE TOTAL_ACT_WAIT_TIME/(NUM_EXEC_WITH_METRICS*1.0) > 5000" >> sqllist.txt

db2 connect reset;
脚本说明

这段脚本是抓取慢SQL的脚本,需要在数据库服务器上每5分钟执行一次。

  1. 脚本每次执行会抓取过去5分钟里平均执行时间大于5秒的SQL语句
  2. 抓取的SQL会输出到文件sqllist.txt中,监控该文件的大小,避免文件过大导致磁盘空间相关问题
  3. 因为脚本每次运行抓取的只是过去5分钟执行过的SQL语句,在白天工作时间执行就可以了,w无人值守的时间将脚本执行关闭掉。
参数说明

具体的监控内容,可以通过ibm官网进行查询

例如 TOTAL_ACT_TIME

转载于:https://blog.51cto.com/13571646/2060453

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值