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

解決 MSSQL 佔用過多記憶體導致伺服器死機:設定最大記憶體上限

     編輯:關於SqlServer

MSSQL 設計上會動態佔用所有可用記憶體作為緩衝集區,導致作業系統可用記憶體降至 4-10 MB,誤以為是記憶體洩漏。實際上這是預期行為,只需設定「最大伺服器記憶體」即可釋放資源給 OS 與其他應用。

微軟官方說明

  • SQL Server 啟動後記憶體持續上升至實體記憶體上限,不表示洩漏。
  • 緩衝集區管理器會在其他進程需要時釋放記憶體(秒級響應)。
  • 「最大伺服器記憶體」僅限制緩衝集區,不限制延伸預存程序、COM 物件等非保留區域。

圖形介面設定最大記憶體

  1. 開啟「企業管理員」/ SSMS,連線執行個體。
  2. 右鍵執行個體 → 「屬性」→ 「記憶體」頁籤。
  3. 取消勾選「動態配置」,或直接在「最大伺服器記憶體 (MB)」輸入數值(建議預留 2-4 GB 給 OS)。

企業管理員進入屬性

屬性對話框

記憶體頁籤設定最大值

T-SQL 設定腳本

-- 設定最大記憶體為 8 GB (8192 MB),最小 1 GB
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 8192; RECONFIGURE;
EXEC sp_configure 'min server memory (MB)', 1024; RECONFIGURE;

生效方式

設定完成後,**重啟 SQL Server 服務** 即可生效(動態調整無需重啟,但建議重啟確保穩定)。

參考文獻

  • KB 319942: HOW TO: Determine Proper SQL Server Configuration Settings
  • KB 316749: PRB: Large Databases May Cause Out-of-Memory Conditions
  • SQL Server 線上叢書:記憶體架構、伺服器記憶體選項、緩衝集區
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved