32 位 Windows 預設:2GB 用戶態 + 2GB 核心態。SQL Server 作為用戶態進程,僅能用 2GB 緩衝池,大內存服務器資源浪費嚴重。
boot.ini(Windows 2003/2008)或 bcdedit(2008 R2+):bcdedit /set IncreaseUserVa 3072-g(保留 256MB 給非緩衝池分配):sqlservr.exe -g256效果:用戶態擴至 3GB,核心態壓縮至 1GB。筆者實測:4GB 物理內存機器,調整後緩衝池從 1.7GB 提升至 2.6GB,查詢效能提升 40%+。
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;EXEC sp_configure 'awe enabled', 1; RECONFIGURE;-- 查看 AWE 分配
DBCC MEMORYSTATUS;
-- 關鍵輸出:AWE Allocated = 大於 4GB 的值
-- 設定最大記憶體(留 1-2GB 給 OS)
EXEC sp_configure 'max server memory (MB)', 6144; -- 6GB 例
RECONFIGURE;
| OS 版本 | 策略 |
|---|---|
| Windows 2000/2003 | **手動設定** 每實例 max server memory,否則首個實例搶佔所有 AWE 內存 |
| Windows 2008+ | OS 動態平衡,但**建議仍手動設定上限**防止單實例佔用過多 |
Target Server Memory vs Total Server Memory 收斂情況**時代註腳**:此文針對 32 位時代(~2012)。現代部署**一律選 64 位 SQL Server + 64 位 OS**,物理內存直接識別,無需任何開關。