美文网首页
DB2调优 监控执行缓慢的SQL

DB2调优 监控执行缓慢的SQL

作者: 吉米曲 | 来源:发表于2018-01-30 15:26 被阅读0次

    在数据库调优过程中经常希望能够获取当前生产环境中执行缓慢的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> 3000) 
    WHERE TOTAL_ACT_WAIT_TIME/(NUM_EXEC_WITH_METRICS*1.0) > 3000" >> slowsql.list
    
    db2 connect reset;
    

    脚本说明

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

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

    参数说明

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

    例如 TOTAL_ACT_TIME

    相关文章

      网友评论

          本文标题:DB2调优 监控执行缓慢的SQL

          本文链接:https://www.haomeiwen.com/subject/qwjczxtx.html