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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章