首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 記憶體管理最佳化:從預設動態配置到固定上限實戰

     編輯:關於SqlServer

案例背景

伺服器升級: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 設定:

方法 1:設定範圍(推薦共用伺服器)

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;

優點:彈性保留最小記憶體,上限保護其他程式。

方法 2:固定記憶體(等同「使用固定記憶體大小」選項)

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) 應穩定在設定上限附近。
  • 其他應用程式不再出現記憶體不足錯誤。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved