SQL Server 深度依賴 Windows 作業系統資源管理。本文針對兩大關鍵參數——虛擬記憶體大小與處理器排程優先權——提供具體調整建議、計算公式與驗證方法,幫助 DBA 從作業系統層面釋放資料庫效能潛力。
| 伺服器角色 | 虛擬記憶體建議 | SQL Server Max Server Memory |
|---|---|---|
| 純 OLTP、無資料倉儲/全文檢索 | 物理記憶體 × 1.5 | 物理記憶體 × 0.8~0.9 (留 10-20% 給 OS) |
| 含資料倉儲、全文檢索、多實例 | 物理記憶體 × 3 ~ 4 | 物理記憶體 × 0.7~0.8 (留更多給 OS 交換) |
-- 設定最大伺服器記憶體 (MB),例如 64GB 實體 → 52GB (約 80%)
EXEC SP_CONFIGURE 'SHOW ADVANCED OPTIONS', 1; RECONFIGURE;
EXEC SP_CONFIGURE 'MAX SERVER MEMORY (MB)', 53248; RECONFIGURE;
⚠️ 物理記憶體升級時,必須同步調整 兩側設定。
Windows 預設「程式」優先權:前景應用程式優先權高、背景服務較低。SQL Server 為背景服務,若在本機執行大量運算 (如 DBCC CHECKDB、索引重建、大量載入),可能因優先權較低而獲得較少 CPU 時間片。
| 場景 | 排程設定 | 說明 |
|---|---|---|
| 專用資料庫伺服器、無互動使用者 | 背景服務 / 最大效能 | 前景/背景同等優先權,SQL 獲得完整 CPU |
| 兼作應用程式伺服器 (IIS、App Server) | 程式 (預設) | 保障前景回應速度,SQL 可能受限 |
| 本機臨時跑大量批次作業 | 暫時調為「最大」或「應用程式」 | 作業完成後改回,避免長期影響互動體驗 |
「我的電腦」→ 「內容」→ 「進階」→ 「效能」設定 → 「進階」→ 「處理器排程」選擇「背景服務」或「程式」。
Memory\Available MBytes > 500MB、Paging File\% Usage < 50%、SQLServer:Memory Manager\Total Server Memory 穩定於設定上限。Processor\% Processor Time 平均 < 70%、System\Processor Queue Length < 2 per core。sys.dm_os_memory_clerks、sys.dm_os_schedulers (runnable_tasks_count)。❌ 虛擬記憶體設 10 倍、20 倍物理記憶體 → 無實質效益,浪費磁碟。
❌ 關閉分頁檔 → 極高風險,記憶體尖峰即崩潰。
❌ 一律設「背景服務」優先權 → 若伺服器兼跑 IIS,使用者會感覺網頁回應變慢。
✅ 根據實際負載角色、硬體規格、業務 SLA 綜合決定,並建立基準線持續追蹤。