| 特性 | 動態管理 (預設) | 靜態管理 |
|---|---|---|
| 運作方式 | SQL Server 自動向 OS 申請/釋放記憶體 | 啟動時固定配置指定大小 |
| 適用場景 | 專用資料庫伺服器、負載波動大 | 共用伺服器、需嚴格限制資源佔用 |
| 優點 | 效能最佳化、零管理負擔 | 可預測記憶體用量、不搶佔其他程式 |
| 缺點 | 可能耗盡實體記憶體導致 OS 交換 | 設定過低導致緩衝區不足、查詢變慢 |
預設啟動,最小/最大伺服器記憶體 分別為 0 / 2147483647 MB(理論上無上限)。SQL Server 會:
Available MBytes 計數器)。常見誤解:看到 SQL Server 佔用 90%+ 記憶體以為是洩漏,實則是「設計使然」——資料庫引擎將熱資料頁留在記憶體以避免磁碟 I/O。
max server memory,總和留 1-2 GB 給 OS)。-- 經驗公式(留給 OS 與非 SQL 程式)
MaxServerMemory (MB) = TotalPhysicalRAM - (1.5 GB ~ 2 GB) - OtherServicesEstimate
範例:32 GB RAM 伺服器,僅跑單一 SQL 實例 → 設定 28~30 GB。
右鍵伺服器 → 屬性 → 記憶體 → 設定 最大伺服器記憶體 (MB)。
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 28672; -- 28 GB
RECONFIGURE;
| 效能計數器 | 健康閾值 | 說明 |
|---|---|---|
| SQL Server: Buffer Manager \ Target Pages | 接近 Total Pages | 目標緩衝區頁數,若遠低於總頁數表示記憶體受限 |
| SQL Server: Memory Manager \ Total Server Memory (KB) | 穩定於 Max 附近 | 實際使用量 |
| Memory \ Available MBytes | > 500 MB | 系統可用記憶體,過低會觸發分頁 |
| Process(sqlservr) \ Working Set | 接近 Total Server Memory | 實體記憶體工作集 |
max server memory 留給 OS。DBCC MEMORYSTATUS 與效能計數器,確認無分頁壓力。RESOURCE_SEMAPHORE 等待,代表查詢記憶體授予不足,需調高上限或優化查詢。