DB2调优(一)监控执行缓慢的SQL
2018-01-12 23:50
330 查看
在DB2调优过程中经常希望能够获取当前生产环境中执行缓慢的sql,获取后可以针对特定慢的sql进行精确调优。以下脚本可以利用,操作还是比较繁琐,需要手动运行。
脚本每次执行会抓取过去5分钟里平均执行时间大于5秒的SQL语句
抓取的SQL会输出到文件sqllist.txt中,监控该文件的大小,避免文件过大导致磁盘空间相关问题
因为脚本每次运行抓取的只是过去5分钟执行过的SQL语句,在白天工作时间执行就可以了,w无人值守的时间将脚本执行关闭掉。
例如 TOTAL_ACT_TIME
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分钟执行一次。脚本每次执行会抓取过去5分钟里平均执行时间大于5秒的SQL语句
抓取的SQL会输出到文件sqllist.txt中,监控该文件的大小,避免文件过大导致磁盘空间相关问题
因为脚本每次运行抓取的只是过去5分钟执行过的SQL语句,在白天工作时间执行就可以了,w无人值守的时间将脚本执行关闭掉。
参数说明
具体的监控内容,可以通过ibm官网进行查询例如 TOTAL_ACT_TIME
相关文章推荐
- druid监控每个服务数据库连接数和SQL执行效率
- 跟踪监控MYSQL执行的sql语句
- Windows下监控mysql正在执行的sql和日志
- 应用Druid监控SQL语句的执行情况
- 监控SQL:监控SQL的执行情况(3)
- 监控执行的SQL
- 监控concurrent 正在执行的sql
- 应用Druid监控SQL语句的执行情况
- linux、windows平台下如何监控mysql执行的sql语句
- 监控SQL:执行表中所有sql语句、记录每个语句运行时间(3)
- 使用Druid对SQL执行情况进行监控,以及SQL注入等的检查
- 使用Druid监控SQL执行状态
- DOMAIN INDEX失效引起SQL执行缓慢
- DB2如何创建explain表监控SQL执行计划
- 如何监控执行的SQL语句?
- 应用Druid监控SQL语句的执行情况
- SqlServer性能优化用SQL(四)【执行次数和性能监控】
- 应用Druid监控SQL语句的执行情况
- JAMon监控SQL执行时间
- 在性能测试时,如何观察服务器端Oracle在执行的Sql语句【监控】