您好,登錄后才能下訂單哦!
在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分鐘執行一次。
- 腳本每次執行會抓取過去5分鐘里平均執行時間大于5秒的SQL語句
- 抓取的SQL會輸出到文件sqllist.txt中,監控該文件的大小,避免文件過大導致磁盤空間相關問題
- 因為腳本每次運行抓取的只是過去5分鐘執行過的SQL語句,在白天工作時間執行就可以了,w無人值守的時間將腳本執行關閉掉。
具體的監控內容,可以通過ibm官網進行查詢
例如 TOTAL_ACT_TIME
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。