Microsoft SQL Server 現今已有 30 多年的歷史,並且仍然是現今最流行的商業用關聯式資料庫之一。它只需稍作調整即可高效率地運行,但也可以深入調整至最佳效能。在微調 SQL Server 資料庫之前,首先必須監控其效能在各種條件和工作負載下的表現。在本篇文章中,我們將重溫一些最具指示性的度量,以測量伺服器效能。
效能監控的好處
為了使資料庫伺服器順暢,定期監控其效能是很重要的。一個好的 SQL Server 監控計劃可以幫助你掌握伺服器的:
- 效能:監控資料庫效能可以幫助發現潛在的瓶頸和其他問題,以便你為將來的發生的事情做好更充分的準備。除了主動性之外,效能度量可以助你決定是否有需要提高效能。例如,在查詢執行時監視查詢可能會發現需要修改的地方。
- 成長:資料庫流量的成長速度之快遠超預期。你可以觀察使用者和流量模式來預測將來需要的升級。
- 安全性:人們都傾向於把術語「資料庫安全性」和稽核聯繫起來。雖然稽核有助於追查未經授權使用資料庫的源頭,並且根據所使用的產品阻止其進入的途徑。然而,效能監控可以幫助確認已採用適當的安全措施。
效能度量
SQL Server 效能度量通常針對以下四個元件:磁碟活動、處理器使用率、記憶體和伺服器本身:
磁碟活動
- % Disk Time:此計數器監視磁碟忙於讀取或寫入活動所用的時間。其值是以百分比表示的「Average Disk Queue Length」值(也就是乘以 100)。如果「Average Disk Queue Length」值為 1,則「% Disk Time」為 100%。如果每個磁碟的這個值都大於 90%,則需要額外的調查。首先,檢查「Current Disk Queue Length」值。如果它高於每個實體磁碟的臨界值2,請監視此值是否經常出很高。
- Average Disk Queue Length:等待 I/O 作業的數量。例如,在 6 磁碟陣列中,「Current Disk Queue Length」值為 12 意味著每個磁碟的佇列為 2。已經被暫止的 I/O 請求數量不應超過實體磁碟磁針數量的 1.5 至 2 倍。
- Page reads/sec 和 page writes/sec:SQL Server 的 Buffer Manager 度量 page reads per second 和 page writes per second 顯示頁面在一秒鐘內讀取或寫入磁盤的次數。這是伺服器級別的度量,因此該數字表示執行個體上所有資料庫的頁面讀取數。建議的 page reads/sec 和 page writes/sec 值應低於 90。較大的值通常表示記憶體不足和可能有索引問題。
處理器使用率
- % Processor time:處理器用於執行使用者處理序(例如 SQL Server)的時間百分比。換句話說,這是處理器花費在使用者處理序上的非閒置時間的百分比。請注意,多處理器系統的每個 CPU 都有一個單獨的執行個體。建議的 % Processor Time 值為 80%,因此如果達到了 80-90%,應該加以解決。
- % Privileged time:指示在 Windows 核心指令(也就是 SQL Server I/O請求)上花費的時間。如果此磁碟計數器和實體磁碟計數器都很高,可以考慮換用較快的磁碟或降低此伺服器的負載。
- % user time:CPU 花費在使用者處理序上的時間百分比。
- Queue Length:等候處理器時間的執行緒數目。較大的數字可能表示需要較快或額外的處理器。
在第 2 部分中,我們將繼續介紹計量記憶體和伺服器作業的度量。