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

優化 SQL Server 資料庫伺服器記憶體配置策略:從 NT 核心到實戰案例

     編輯:關於SqlServer

背景:農行統計系統效能瓶頸排查

農業銀行總行網絡版綜合業務統計系統(WinNT 4.0 + SQL Server)運行緩慢,排除硬體後鎖定**記憶體配置不當**為核心原因。記憶體配置優劣決定系統吞吐量。

一、Windows NT 記憶體基礎概念

  • 物理記憶體 (RAM): 硬體記憶體晶片。
  • 虛擬記憶體: 硬碟空間模擬 RAM,透過**分頁** 將暫不用的記憶體內容換出至 pagefile.sys。

二、優化 NT 4.0 系統記憶體

1. 基礎需求規劃

元件/服務記憶體需求
NT 核心基本32 MB 建議
網路服務+4 MB
容錯/磁碟鏡像+8 MB
圖形處理+16 MB
開發工具+16 MB
大型資料庫額外大量需求

2. 效能優化手段

  • 降低顯示色彩/解析度、禁用桌布。
  • 停用非必要服務與驅動程式(控制台 → 服務/裝置)。
  • **資料庫伺服器專機專用**,勿跑其他應用。

3. 虛擬記憶體 (分頁檔) 最佳配置

  • 初始大小: 保留預設(= 物理記憶體大小)。
  • 最大值: 物理記憶體 **2.5 ~ 4 倍**。低負載取下限,高負載取上限。
  • **專用磁碟/分區存放分頁檔**,主分區僅留 16 MB,減少磁頭競爭與 CPU 切換開銷。

三、優化 SQL Server 記憶體配置

1. 依物理記憶體規劃 SQL Server 可用記憶體 (單位:2KB 頁)

物理記憶體建議分配給 SQL設定值 (2KB頁)
64 MB40-46 MB20480-23552
128 MB100-108 MB51200-55296
256 MB216-226 MB110592-115712
512 MB464-472 MB237568-241664

**原則:** 盡量多給 SQL Server,**但不引發系統分頁**。

2. 設定步驟

企業管理器 → 伺服器屬性 → 設定 → 記憶體 → 目前值填入上表設定值 → 重啟服務。

3. 進階技巧:tempdb in RAM

  • sp_configure 啟用,將 tempdb 建在記憶體,大幅提升排序/臨時表操作速度。
  • 佔用獨立記憶體區,**不計入 SQL Server 記憶體池**,需謹慎評估總記憶體壓力。
  • 適當擴大 tempdb 空間亦有助效能。

四、實戰案例:錯誤設定 1000MB 導致服務無法啟動

伺服器 128MB 物理記憶體,誤將 SQL 記憶體設為 1000MB(單位 2KB 頁應為 512000,實填 1000 導致巨大值)。服務啟動失敗,無法進管理工具修正。
**破解:** 擴充虛擬記憶體至 1000MB+ → 重啟 → SQL 啟動成功 → 進管理工具修正回正確值。虛擬記憶體救急大法實測有效。

五、結語與建議

  • 生產環境 SQL Server **不低於 32MB**,專機運行。
  • 預留 2-20MB 系統緩衝記憶體應對突發服務/進程。
  • 實測發現:大數據量查詢瓶頸在 **CPU 非記憶體**(P4 2.4 常滿載 100%,雙 Xeon 2.4 峰值 90%)。
  • 合理規劃 NT + SQL 記憶體,系統必能充分發揮設計效能。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved