SQL Server 2008 的記憶體管理與 I/O 子系統是效能調優的核心戰場。本文針對 32 位元環境,系統性闡述虛擬記憶體架構、AWE/PAE/3GB 開關配置、緩衝池組件、動態管理視圖 (DMV) 監控,以及 I/O 子系統規劃、RAID 選型、效能計數器與待決 I/O 診斷,提供完整的診斷框架與實戰腳本。
使用者模式給應用程式,核心模式給 OS 核心與驅動,擁有完整硬體存取權。預設各佔 2GB 虛擬位址空間 (VAS)。
修改 boot.ini (或 BCDEdit) 加入 /3GB,核心佔 1GB、使用者得 3GB。適用於 SQL Server 需更大緩衝池的場景。



/PAE 開啟實體位址擴充,32-bit 系統可支援高達 64GB 物理記憶體。啟用後需確保無 /3GB 衝突 (物理記憶體 > 16GB 時建議關閉 /3GB)。


AWE (Address Windowing Extensions) 允許鎖定實體頁面、映射至 32-bit VAS 視窗。SSMS → 執行個體屬性 → 記憶體 → 勾選「使用 AWE 分配記憶體」。

大於 8KB 的大記憶體塊 (Multi-page Allocator) 直接向 OS 申請,不經緩衝池;唯資料頁可用 AWE 記憶體。
sys.dm_os_memory_nodes):NUMA 節點對應,底層配置器。sys.dm_os_memory_clerks):各組件 (如 CACHESTORE_SQLCP) 透過 Clerk 向節點申請。sys.dm_os_memory_objects):更細粒度堆積配置,供組件內部使用。
| DMV / 命令 | 用途 |
|---|---|
sys.dm_os_memory_cache_clock_hands | 快取時鐘指針狀態:轉動圈數、淘汰條目數,偵測記憶體壓力。 |
sys.dm_os_memory_cache_counters | 快取運行快照:記憶體用量、條目數、使用中條目。 |
sys.dm_os_memory_cache_hash_tables | 雜湊表桶長度分佈,分析快取爭用。 |
sys.dm_os_memory_cache_entries | 追蹤每個快取條目至關聯物件。 |
sys.dm_os_sys_info | 伺服器資源總覽 (CPU、記憶體、排程器等)。 |
sys.dm_os_sys_memory | OS 層級記憶體資訊 (可用物理、分頁檔使用率)。 |
sys.dm_os_virtual_address_dump | 進程 VAS 頁面範圍詳情。 |
DBCC MEMORYSTATUS | 完整記憶體狀態快照,排查瓶頸核心依據。 |




吞吐量 取決於陣列內部頻寬、HBA 速度 (1/2/4/8 Gbps) 與磁碟數量。
IOPS (Input/Output Operations Per Second) 衡量隨機存取能力。單顆磁碟 IOPS 上限:SAS ~180、SATA ~100、SSD 萬級。
不同 RAID 寫入懲罰係數:
單磁碟所需 IOPS 估算公式:
((Total_IOPS * (1 - Cache_Hit_Ratio) * Read_Ratio)
+ (Total_IOPS * Write_Ratio * RAID_Penalty))
/ Disk_Count / 0.85 (85% 利用率安全線)



sys.dm_io_virtual_file_stats:各資料/日誌檔 I/O 統計 (延遲、吞吐、等待)。sys.dm_io_pending_io_requests:當前待決 I/O 請求,關聯上述視圖定位熱點檔案。CACHESTORE_SQLCP, CACHESTORE_OBJCP, CACHESTORE_PHDR, CACHESTORE_XPROC)。sys.dm_exec_cached_plans + sys.dm_exec_sql_text 找出佔用記憶體最大的查詢計畫。





記憶體與 I/O 診斷需自下而上:OS 層配置 (/3GB, /PAE, AWE) → SQL 記憶體架構 (緩衝池、Clerk、DMV) → I/O 子系統規劃 (RAID、檔案佈局) → 持續監控 (PLE、IOPS、待決 I/O、計畫快取)。善用 DMV 與效能計數器,建立基準線,異常時快速定位根因。