背景:農行統計系統效能瓶頸排查
農業銀行總行網絡版綜合業務統計系統(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 MB | 40-46 MB | 20480-23552 |
| 128 MB | 100-108 MB | 51200-55296 |
| 256 MB | 216-226 MB | 110592-115712 |
| 512 MB | 464-472 MB | 237568-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 記憶體,系統必能充分發揮設計效能。