萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

大內存 SQL Server 加速指南:3GB/4GB+ 突破 32 位限制

背景:32 位 OS 的 4GB 牆

32 位 Windows 預設:2GB 用戶態 + 2GB 核心態。SQL Server 作為用戶態進程,僅能用 2GB 緩衝池,大內存服務器資源浪費嚴重。

方案一:啟用 3GB 用戶態空間(/3GB 開關)

  1. 編輯 boot.ini(Windows 2003/2008)或 bcdedit(2008 R2+):
    bcdedit /set IncreaseUserVa 3072
  2. 重啟 OS
  3. SQL Server 啟動參數加 -g(保留 256MB 給非緩衝池分配):
    sqlservr.exe -g256

效果:用戶態擴至 3GB,核心態壓縮至 1GB。筆者實測:4GB 物理內存機器,調整後緩衝池從 1.7GB 提升至 2.6GB,查詢效能提升 40%+。

方案二:啟用 AWE 突破 4GB(需 Enterprise Edition)

前置條件

  • Windows Enterprise / Datacenter 版(支援 PAE)
  • SQL Server Enterprise / Developer 版
  • 物理內存 > 4GB

三步配置

  1. 鎖定內存頁(本地安全策略 → 用戶權利指派 →「鎖定記憶體頁面」加入 SQL Server 服務帳號)
  2. 啟用 AWE:
    EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
    EXEC sp_configure 'awe enabled', 1; RECONFIGURE;
    重啟 SQL Server 服務
  3. 限制文件系統緩存(防止 OS 搶佔內存):
    網絡連接 → 區域連接 → 內容 → 檔案與印表機共享 → 屬性 → 取消「最大化網路應用程式資料吞吐量」

配置後驗證

-- 查看 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 收斂情況
  • 錯誤日誌關注「AWE allocation failed」訊息
  • 補丁升級後重新驗證鎖定頁面權限未被重置
  • **不再適用於 64 位 SQL Server**——64 位原生支援 TB 級內存,無需 AWE

**時代註腳**:此文針對 32 位時代(~2012)。現代部署**一律選 64 位 SQL Server + 64 位 OS**,物理內存直接識別,無需任何開關。

copyright © 萬盛學電腦網 all rights reserved