有效的 SQL Server 效能監控需遵循系統性流程:確定目標 → 選擇工具 → 標記組件 → 定義指標 → 執行監控 → 分析數據。本文整理系統層(作業系統資源)與 SQL Server 執行個體層(內部物件)的核心監控指標與工具。
SQL Server 對磁碟 I/O 高度敏感,I/O 瓶頸是最常見效能殺手。關鍵計數器:
PhysicalDisk\Avg. Disk sec/Read 與 /Write:建議 < 10ms(SSD 可 < 1ms),持續 > 20ms 即為嚴重瓶頸。PhysicalDisk\Current Disk Queue Length:持續 > 2 × 磁碟數 表示排隊嚴重。SQLServer:Buffer Manager\Page reads/sec、Page writes/sec:反映緩衝區命中率與寫入壓力。SQL Server 會動態管理記憶體,監控重點在於確認是否受外部壓力擠壓:
Memory\Available MBytes:長期 < 100MB 表示系統記憶體不足。SQLServer:Buffer Manager\Buffer cache hit ratio:應 > 99%,否則需增加記憶體或優化查詢。SQLServer:Memory Manager\Target Server Memory / Total Server Memory:若 Total 持續 < Target,表示記憶體受限。Processor(_Total)\% Processor Time:持續 > 80% 需調查高耗 CPU 查詢或考慮擴展。System\Processor Queue Length:持續 > 2 × 核心數 表示 CPU 排隊。SQLServer:SQL Statistics\Batch Requests/sec、SQL Compilations/sec、SQL Re-Compilations/sec:編譯/重編譯過高會消耗大量 CPU。| 工具 | 特性 | 適用場景 |
|---|---|---|
| 系統監視器 | 即時圖表、計數器記錄、警示 | 即時診斷、短期觀察 |
| 計數器記錄 | 排程自動收集、二進位/CSV/TSV/SQL 儲存 | 長期基線建立、趨勢分析、離線報表 |
| DMV/DMF | 透過 T-SQL 查詢內部狀態,無額外負擔 | 程式化監控、整合至管理框架、精準診斷 |
「沒有基線,就沒有異常。」請在系統穩定運行時,收集至少一週的完整計數器記錄與 DMV 快照,作為未來比較基準。重點記錄:工作負載特徵(高峰/離峰)、維護窗口影響、備份/索引重建期間的資源消耗曲線。
善用 sys.dm_os_performance_counters 可程式化抓取上述所有計數器,搭配 SQL Agent 作業定期寫入歷史表,打造屬於自己的輕量級監控儀表板。