在DB2調(diào)優(yōu)過程中經(jīng)常希望能夠獲取當(dāng)前生產(chǎn)環(huán)境中執(zhí)行緩慢的sql,獲取后可以針對特定慢的sql進行精確調(diào)優(yōu)。以下腳本可以利用,操作還是比較繁瑣,需要手動運行。
成都創(chuàng)新互聯(lián)公司擁有網(wǎng)站維護技術(shù)和項目管理團隊,建立的售前、實施和售后服務(wù)體系,為客戶提供定制化的成都網(wǎng)站制作、網(wǎng)站設(shè)計、網(wǎng)站維護、服務(wù)器托管解決方案。為客戶網(wǎng)站安全和日常運維提供整體管家式外包優(yōu)質(zhì)服務(wù)。我們的網(wǎng)站維護服務(wù)覆蓋集團企業(yè)、上市公司、外企網(wǎng)站、商城系統(tǒng)網(wǎng)站開發(fā)、政府網(wǎng)站等各類型客戶群體,為全球1000+企業(yè)提供全方位網(wǎng)站維護、服務(wù)器維護解決方案。
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, '5 ', -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的腳本,需要在數(shù)據(jù)庫服務(wù)器上每5分鐘執(zhí)行一次。
- 腳本每次執(zhí)行會抓取過去5分鐘里平均執(zhí)行時間大于5秒的SQL語句
- 抓取的SQL會輸出到文件sqllist.txt中,監(jiān)控該文件的大小,避免文件過大導(dǎo)致磁盤空間相關(guān)問題
- 因為腳本每次運行抓取的只是過去5分鐘執(zhí)行過的SQL語句,在白天工作時間執(zhí)行就可以了,w無人值守的時間將腳本執(zhí)行關(guān)閉掉。
具體的監(jiān)控內(nèi)容,可以通過ibm官網(wǎng)進行查詢
例如 TOTAL_ACT_TIME