f 用whoisactive 抓取slow query 的執行計劃後,成功調校的案例 ~ 迪貝之家

Pages

用whoisactive 抓取slow query 的執行計劃後,成功調校的案例

今天我確認了這個案例,還真的成功解決了slow query的問題,我真的太訝異了!!
問題的呈現是小弟真的很認真地在執行每日的檢核工作,所以從whoisacive的data store中查看微軟所提供的query template之後,找到一段語法跑了一個多小時,這種query一看都嘛知道有問題,匯出為csv檔後,整理為excel的報表之後,就mail給AP Leader,他接到後問我說,是不是索引跑掉;我回覆說,我怎會知道哩!!要確認的話,就是把執行計劃抓出來看!!僅接著就是後續的debug過程, 我列出來給大家看~~



1. 執行whoisactive時,啟動它要收取執行計劃
whoisactive


2.上述的產出會有一個欄位叫做query_plan,正常來說,2008以後,在SSMS裡頭點這個欄位的話,它會轉成執行計劃的圖給你看,如果沒有的話, 就暫時先把它存成xml檔, 然後再把該檔的附檔名改成sqlplan,再打開來,就是圖形檔了


sqlplan


紅色框框就是成本最高的部份, 佔了73%;AP Team就照著綠色字眼的部份進行調整


3.怎麼取得綠色字眼的細節
Database Engine Tuning Advisor (DTA)


4. index advisor 
Database Engine Tuning Advisor (DTA)











今天我在看sql server plan guide的技術文件時,想說把這個Case調出來看一下,原本我自己看了執行計劃,想說是不是該用一下SQL Server Index on Computed Column來解決 ; 結果AP跟我說,照著Advisor 給的語法建出索引就解決了!!advisor應該是來自Database Engine Tuning Advisor (DTA).以後就先照著微軟的工具建議來做吧~不work的話,再來想辦法!!其實邏輯也沒錯,處理掉cost最高的部份