google code prettify

2021年6月8日 星期二

[SQL Server] HardWare And Performance tuning

前一陣子在FB看到James Fu線上直播,主題:如何在開發者角度,讓SQL的執行速度變快 ,雖然只有一個小時,但蠻多乾貨可以筆記下來。

SQL效能有關的硬體方面有以下三點
  1. CPU
  2. Hard Disk I/O
  3. RAM

  • How to  check Hard Disk I/O performance 
在沒有另外安裝程式的情況下,如何檢查 Hard Disk I/O Performance ?
首先登入SSMS的帳號,需要有備份的權限
BACKUP DATABASE [資料庫名稱] TO DISK='NUL' WITH COPY_ONLY
BACKUP DATABASE TO DISK = 'NUL' 對資料庫有執行備份作業,且不產生實體備份檔案
若因故寫成 TO DISK = 'NUL' ,這是會產生實體的備份檔案

TO DISK='NUL' (讀資料的時間)
TO DISK="C:\Temp\TEST.BAK" (讀加寫的時間)
(讀加寫的時間)-(讀資料)=(寫資料時間)






經過上面驗證後,如果Hard Disk I/O有發生異常時,有可能是Hard Disk raid 電池(舉例),
但至少有一個方向可以釐清跟SQL語法無關

  • 善用SQL的執際執行計畫
例如,選擇兩個查詢結果一樣的SQL,選擇一個原本的查詢方式,另一個選擇要不同查詢SQL,
實行計畫會顯示哪個一個時間用比較多,哪一個SQL用比較少?
Example - 找商品哪個沒使用過,應該使用Except或NOT IN,
(實驗檢驗真理,也許以後有更有效率的寫法)

  • 檢查DataBase相容性層級是否為新版本,讓SQL Server 使用最佳化的搜尋
DataBase滑鼠點屬性,選擇"選項",再點選相容性層級,
因為相容性計畫是跟資料庫,不是跟這SQL Sverver最新版本,需手動選擇,不會自動選擇。

  • DataBase File要跟CPU核心數匹配
如果只有一個DataBase File,就無法達到平行處理,會導致一直切換執行緒,導致變慢。
舉例:常發生於外包專案上,Server CPU升級了,但速度可能反而變慢,這時候就需要檢查DataBase File。


沒有留言:

張貼留言