Windows 效能監視器 是監控 SQL Server 基礎架構效能的核心工具。它提供數百個計數器,涵蓋作業系統層面(CPU、記憶體、磁碟、網路)與 SQL Server 專屬層面(緩衝區、鎖、存取方法等)。本文精選 7 大類關鍵指標,說明其含義、健康閾值、異常判讀與對應調優方向,協助 DPA 快速定位瓶頸。
含義:資料頁面從緩衝區(記憶體)讀取的比例,而非從磁碟讀取。公式:(Logical Reads - Physical Reads) / Logical Reads。
健康閾值:
偏低原因與對策:
max server memory、檢查其他程序佔用。LARGE_PAGES、資料壓縮、分區表消除。含義:每秒從磁碟讀寫以解析分頁錯誤的頁面數(硬錯誤 + 軟錯誤)。持續高值表示系統發生大量分頁交換。
健康閾值:
綜合判讀:若 Buffer cache hit ratio 高(>99%)但 Pages/sec 仍高**,表示記憶體壓力來自 **SQL Server 以外的程序**(防毒、備份代理、監控代理等),需排查作業系統層面記憶體消費者。
含義:可立即配置給程序的實體記憶體位元組數。
健康閾值:> 500 MB(建議 > 1-2 GB)。若 < **5 MB**,SQL Server 可能因無法取得記憶體而產生嚴重效能下降或 OOM 錯誤。
對策:設定 max server memory 為實體記憶體的 80-90%,預留給 OS、驅動程式、備份壓縮緩衝區、CLR 等。
含義:磁碟處理讀/寫請求的時間佔比。100% 表示磁碟持續忙碌(單一磁碟);RAID 陣列若為 4 顆實體磁碟,理論上限 400%。
健康閾值:< 55%(單一磁碟基準)。持續 > 55% 表示 I/O 子系統可能成為瓶頸。
對應分析:結合 Avg. Disk sec/Read、Avg. Disk sec/Write(延遲)判斷:
含義:等待服務的 I/O 要求平均佇列長度。
健康閾值:每顆實體磁碟 < 2。計算方式:觀測值 / 實體磁碟數。例:RAID 10 (4 顆磁碟) 觀測值 10 → 單磁碟 2.5 → 略高,需關注。
持續偏高對策:檢查 sys.dm_io_virtual_file_stats 找出熱門資料庫檔案、將 tempdb/data/log 分散至不同磁碟、啟用瞬間檔案初始化、優化索引減少掃描。
含義:所有邏輯處理器執行非閒置執行緒的時間百分比總和。單顆 CPU 100%,8 核心上限 800%。
健康閾值:持續 < 80%(總和基準)。偶爾尖峰可接受;持續 > 80% 需調查。
常見高 CPU 原因:
SQL Compilations/sec 高 → 強制參數化、優化計畫重用。ONLINE、分區級維護。OPTION (RECOMPILE)、查詢存放區強制計畫。Lock Waits/sec 高 → 索引優化、縮短交易、調整隔離等級。CXPACKET 等待高 → 調整 MAXDOP、Cost Threshold for Parallelism。含義:等待 CPU 執行的執行緒數(不含正在執行的)。
健康閾值:每邏輯處理器 < 2。8 核心機器閾值約 16。持續超過表示 CPU 資源爭用嚴重。
| 物件:計數器 | 關注重點 | 建議閾值/觀察方向 |
|---|---|---|
| SQLServer:General Statistics → User Connections | 連線數趨勢 | 突增可能為連線洩漏、應用程式 Bug |
| SQLServer:Locks → Lock Waits/sec, Average Wait Time (ms) | 鎖競爭 | Waits/sec > 0 且 Avg Wait > 50ms 需優化索引/交易 |
| SQLServer:Access Methods → Full Scans/sec | 表掃描頻率 | > 1-2/sec 需檢查缺失索引 |
| SQLServer:Buffer Manager → Page life expectancy (PLE) | 頁面在緩衝區存活秒數 | < 300 秒(5分)表示記憶體壓力或掃描污染 |
| SQLServer:SQL Statistics → Batch Requests/sec | 吞吐量基準 | 配合 CPU/% Processor Time 判斷效率 |
| SQLServer:Databases → Log Flush Wait Time | 交易日誌寫入延遲 | 高值表示日誌磁碟瓶頸 |
| SQLServer:Wait Statistics → Wait Time (各類等待) | 等待分析核心 | 重點關注 PAGEIOLATCH、CXPACKET、LCK_M、WRITELOG、SOS_SCHEDULER_YIELD |
sys.dm_os_wait_stats、Query Store 能直接指出 SQL Server 內部等待原因,計數器則提供 OS/硬體層面佐證。掌握上述 7 大核心計數器與 SQL Server 專屬指標,配合基準線、自動化蒐集與等待統計分析,即可建立完整的 SQL Server 效能監控體系。記住:單一指標不足以斷言瓶頸,必須多維度交叉驗證(如:高 CPU + 高 Compilations/sec → 編譯問題;高 CPU + 高 LCK_M → 阻塞問題),才能精準定位並實施有效調優。