前段時間數據庫健康檢查發現SQL Server服務器的idle時間變少,IO還是比較空閒,估計是遇到了高CPU占用的語句了。
介紹一下背景,我們公司負責運維N多的應有系統,負責提供良好的軟、硬件環境,至於應用的開發質量,我們就無能為力了
解決這個問題,我的思路是:
找出CPU占用最大的語句。
分析查詢計劃。
優化。
1、找出語句
使用SQL Server自帶的性能報表(不是報表服務),找出CPU占用最大的語句。如圖1所示
圖1 性能報表
我選取了“性能-按總CPU時間排在前面的查詢”,得出以下兩張報表,如圖2所示:
圖2 性能-按總CPU時間排在前面的查詢
在報表中不能直接把語句Copy出來,非得讓我另存為Excel才能Copy語句;而且經常標示不了是語句屬於哪個數據庫,不爽 :( 。
費了我九牛二虎之力才找出該條語句在哪個數據庫執行,然後馬上備份數據庫,在另一個非生產數據庫上面還原,創造實驗環境。
廢話少說,我把語句Copy出來,順便整理了一下格式。如下:
select*
fromnetwork_listen
where
node_codein
(
selectdistinctnode_code