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

SQL Server 記憶體使用量異常偏低?鎖定頁面 (Lock Pages in Memory) 導致工作集合顯示不準

     編輯:關於SqlServer

現象:工作管理員顯示 sqlservr.exe 僅佔用 88MB 記憶體,但伺服器實體記憶體 12GB、可用 8GB+。實際上 SQL Server 已正常使用大量記憶體,只是被鎖定在非分頁集區,不計入工作集合。

驗證真實記憶體使用:DMV 與效能計數器

-- DMV 查詢實際使用
SELECT physical_memory_in_use_kb, locked_page_allocations_kb, *
FROM sys.dm_os_process_memory;

-- 效能計數器 (PerfMon)
-- 物件: SQL Server: Memory Manager
-- 計數器: Total Server Memory (KB)

結果顯示 physical_memory_in_use_kb 約 2GB,證實 SQL Server 正常運作。

根因:Lock Pages in Memory (LPIM) 特權

  • 錯誤日誌含訊息:Large Page Extensions enabled. Large Page Allocated: 32MB。
  • 啟用 LPIM 後,SQL Server 使用 AWE API 鎖定記憶體頁面,防止被作業系統分頁到磁碟。
  • 鎖定頁面 不計入工作集合,導致工作管理員/工作集合計數器嚴重偏低。

32 位元 vs 64 位元 差異

Large Pages (大型頁面) 與 Trace Flag 834

  • 僅啟用 LPIM 不會自動使用 Large Pages。
  • 需啟用 Trace Flag 834 (啟動參數 -T834) 才會使用 Large Pages。
  • 錯誤日誌出現 Using large pages for buffer pool. 才代表真正啟用。

監控建議

  1. 勿信任工作管理員 查看 SQL Server 記憶體。
  2. 使用 DMV: sys.dm_os_process_memory、PerfMon: Total Server Memory (KB)、sys.dm_os_memory_clerks。
  3. 設定 max server memory 留足作業系統與其他服務記憶體 (建議保留 4-8GB 或總量 10-15%)。

參考資源

  • Fun with Locked Pages, AWE, Task Manager, and the Working Set (Microsoft 部落格)
  • Why SQL Server is using so LESS memory (CSS SQL Server Engineers)

理解鎖定頁面機制,避免誤判記憶體壓力而錯誤調整設定。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
架構AWE API 用途
32-bit突破 4GB 限制 / 啟用 AWE 功能
64-bit鎖定緩衝集區頁面、提升效能、防止分頁