[SQL SERVER][Performance]如何使用DTA快速分析並調校SQL提高查詢效能
前幾天被朋友詢問在Oracle是否有相關免費軟體可以分析並調校SQL,
但其實在Oracle10g之後版本中就有內建還不錯的SQL Tunning Tool,
那SQL Server呢?幸運的在SQL2008版本中也內建不錯的SQL Tunning Tool,
這篇就來大概介紹如何使用DTA快速分析並調校SQL並提高查詢效能。
假設我們已經取得相關查詢效能差的語法
CPU:2218ms , Logical reads:89481,QC:67.1701
使用DTA進行SQL Tunning
開啟DTA。
一般頁籤
這檔案內容包含該資料庫中所有查詢效能差的語法,
這裡我選擇檔案(當然你也可以選擇特定資料表)。
勾選該資料庫中所有資料表。
微調選項頁籤
如果你有儲存空間的壓力,那可以設定空間最大上限。
選取建議都是離線(減少Server效能開銷)。
以下類型可以依自行需求選取
資料庫中要使用的實體設計結構:
這裡我選取索引和檢視表,同時勾選包含篩選的索引。
要採用的分割策略:
選取沒有資料分割。
資料庫中要保留的實體設計結構:
選取保留所有的PDS。
當微條選項都選取好後就可以開始執行分析,
DTA會依照你勾選類型給予相關建議並產出相關報表。
開時分析
DTA建議
可以看到估計改進效能高達76%(一般超過80%我都會直接套用),
同時DTA給予建立統計值和非叢集索引的建議,這裡我就直接套用該建議。
複製建議語法並修改
建立統計值。
建立非叢集索引。
再次執行相同查詢
CPU:1844ms , Logical reads:26935,QC:14.4347
結論:
SQL2008DTA工具個人認為參考價值算滿高的(準確度相當不錯),
但設計和建立正確的索引單單只靠工具是不夠的,
DBA唯有了解各種索引類型特性、差異和限制,
並多多嘗試建立不同索引類型,
唯有實際走過才能真正了解SQL Tunning並累積調校經驗。