伺服器升級:OS Win2K → Win2003,RAM 512 MB → 1 GB。升級初期正常,數週後其他應用程式頻繁報「記憶體配置不足」。追蹤發現 SQL Server 記憶體從 <400 MB 飆升至 900 MB 且持續增長。
預設啟動後,SQL Server 依作業系統回報的實體記憶體動態擴縮緩衝集區。只要可用實體記憶體維持在 4-10 MB 間,緩衝集區持續增長(保留 4-10 MB 避免 OS 頻繁分頁)。僅當可用記憶體過低時才釋放。此機制在共用伺服器上會擠佔其他程式記憶體。
透過企業管理器 → 伺服器屬性 → 記憶體頁籤,或 sp_configure 設定:
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'min server memory', 0; -- MB
EXEC sp_configure 'max server memory', 256; -- MB,視其他程式需求調整
RECONFIGURE;
優點:彈性保留最小記憶體,上限保護其他程式。
EXEC sp_configure 'min server memory', 256;
EXEC sp_configure 'max server memory', 256;
RECONFIGURE;
優點:完全可預測,適合嚴格容量規劃環境。
雖屬進階選項即時生效,但建議重啟 SQL Server 服務,讓緩衝集區在新限制下重新整理,避免殘留舊分配頁面造成暫時性壓力。
SQL Server:Memory Manager → Total Server Memory (KB) 應穩定在設定上限附近。