兩種基本管理方法
| 模式 | 動態配置 | 靜態配置 |
| 定義 | 宣告最大/最小值,SQL Server 依實際負載自動申請/釋放記憶體 | 固定配置一塊記憶體空間,不再動態調整 |
| 預設值 | ✓ (安裝預設) | 需手動設定 |
| 適用場景 | 專用資料庫伺服器、負載波動大、希望最大化效能 | 多應用共存、嚴格控制資源配額、虛擬化環境保證基準 |
動態配置運作機制
- 啟動時僅佔用 ~8-12 MB 初始化。
- 隨負載增長,持續申請記憶體直到達到 目標記憶體 (Target Server Memory)。
- 目標記憶體由 可用實體記憶體 - 4~10 MB 決定 (留給 OS 防止分頁)。
- 外部應用佔用記憶體導致可用量低於目標 → SQL Server 釋放記憶體;外部釋放 → SQL Server 回收。
- 調整速度:每秒數 MB,快速響應。
靜態配置風險與誤區
- 設定過低:緩衝區、查詢工作區、記錄快取不足 → 大量分頁 I/O、Hash Join 溢寫 Tempdb、效能崩潰。
- 「保留給其他應用」不一定有效:若 SQL Server 實際需要更多記憶體,強制靜態上限會導致內部交換,反而拖慢整體系統。
- 唯一有效補救:增加實體記憶體,或將其他應用移至獨立伺服器。
計算最佳記憶體配置建議
- 可預測負載:依峰值連線數與查詢複雜度估算,微軟建議至少保留 4 MB 可用給 OS。
- 負載變化大 (如 Web 前端):收集高峰期效能計數器:
→ Buffer Cache Hit Ratio (應 > 99%)
→ Page Reads/sec / Page Writes/sec (分頁率)
→ Memory Grants Pending (記憶體授權等待)
若分頁頻繁 (>1/秒) 或授權等待持續,遞增 max server memory 直到改善。
- 「保留實體記憶體給 SQL Server」選項 (Reserve Physical Memory):
防止 SQL Server 已配置記憶體被分頁到磁碟。
雙面刃:大記憶體機器 (1GB+) 可提升穩定性;但若關鍵進程突發需大量記憶體,SQL Server 可能被迫釋放導致效能劇烈波動。
專用資料庫伺服器建議啟用;混合負載謹慎評估。
設定介面
- 企業管理器 → 伺服器屬性 → 記憶體頁籤 → 動態/靜態切換、最大/最小值、保留實體記憶體勾選。
- T-SQL:
sp_configure 'max server memory', 4096; RECONFIGURE; (單位 MB)。
總結
專用資料庫伺服器 → 動態配置 + 保留實體記憶體,讓 SQL Server 充分利用資源。
多應用共存 → 動態配置 + 設定 max server memory 保留 OS/其他應用空間,嚴禁靜態配置除非極特殊虛擬化配額需求。
記憶體壓力根本解決之道:加實體記憶體、優化查詢減少不必要授權、架構分離關鍵工作負載。