[SQL SERVER][Performance]如何使用DTA快速分析並調校SQL提高查詢效能

[SQL SERVER][Performance]如何使用DTA快速分析並調校SQL提高查詢效能

前幾天被朋友詢問在Oracle是否有相關免費軟體可以分析並調校SQL,

但其實在Oracle10g之後版本中就有內建還不錯的SQL Tunning Tool,

那SQL Server呢?幸運的在SQL2008版本中也內建不錯的SQL Tunning Tool,

這篇就來大概介紹如何使用DTA快速分析並調校SQL並提高查詢效能。

 

假設我們已經取得相關查詢效能差的語法

image

image

CPU:2218ms , Logical reads:89481,QC:67.1701

 

使用DTA進行SQL Tunning

image

開啟DTA。

 

一般頁籤

image

這檔案內容包含該資料庫中所有查詢效能差的語法,

這裡我選擇檔案(當然你也可以選擇特定資料表)。

 

image

勾選該資料庫中所有資料表。

 

微調選項頁籤

image

如果你有儲存空間的壓力,那可以設定空間最大上限。

選取建議都是離線(減少Server效能開銷)。

 

以下類型可以依自行需求選取

image

資料庫中要使用的實體設計結構:

這裡我選取索引和檢視表,同時勾選包含篩選的索引。

 

要採用的分割策略:

選取沒有資料分割。

 

資料庫中要保留的實體設計結構:

選取保留所有的PDS。

 

當微條選項都選取好後就可以開始執行分析,

DTA會依照你勾選類型給予相關建議並產出相關報表。

 

開時分析

image

 

DTA建議

image

image

image

image

可以看到估計改進效能高達76%(一般超過80%我都會直接套用),

同時DTA給予建立統計值和非叢集索引的建議,這裡我就直接套用該建議。

 

複製建議語法並修改

image

建立統計值。

 

image

建立非叢集索引。

 

再次執行相同查詢

image

image

CPU:1844ms , Logical reads:26935,QC:14.4347

 

結論:

SQL2008DTA工具個人認為參考價值算滿高的(準確度相當不錯),

但設計和建立正確的索引單單只靠工具是不夠的,

DBA唯有了解各種索引類型特性、差異和限制,

並多多嘗試建立不同索引類型,

唯有實際走過才能真正了解SQL Tunning並累積調校經驗。