欄位字元型別不匹配導致CPU佔用率高

ygzhou518發表於2012-02-29
WINDOWS2003+MSSQL2005
CPUs:6*4
Mem:32G
 
cpu平均使用達40%;
MEM使用25G;
 
分析硬體效能狀態、彙總資訊如下:
       記憶體頁交換較少、buffer命中率高、記憶體頁生命週期較長、IO佇列為0
綜上資訊初步判斷SQL語句編寫不合理導致CPU使用高居不下.
 
通過SQLProfiler工具以CPU執行時間為過濾條件(>=1000MS),抓取5小時的樣本資料:
       其中的一個應用執行頻率高、1次/S,該儲存內嵌4條SQL,其中2條SQL的CPU執行時間超過1500MS。
 
分析該典型SQL語句:
 
原始 PROD中傳遞欄位的資料型別設定為N'vchar,TABLE中對應的欄位資料型別為VCHAR,因為欄位的資料型別不匹配導致index所走的路線為index seek  1% +  index scan 99%
更改儲存欄位資料型別後index cost為index seek 50% + index seek 50%
 
效能得到明顯提升,CPU平均使用降到10%。
 
 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24867586/viewspace-717399/,如需轉載,請註明出處,否則將追究法律責任。

相關文章