Sql-Server

虛擬化 SQL Server 記憶體異常

  • June 10, 2016

我以前從未見過這種情況,儘管它可能很常見。我正在查看虛擬化(VMWare 5.5)SQL Server(Windows 2008 R2 上的 2008R2)。我看到的是,在 Task Manager* 中,sqlserver.exe使用了大約 163 MB 的 RAM,如果我使用procexp,相同的服務顯示使用的 RAM 不到 500 MB。

VM 有 32GB 的 RAM,任務管理器顯示正在使用的 RAM 為 31.7GB。VMWare Perfmon 計數器似乎沒有顯示任何膨脹(也許我讀錯了)。

想法/指導表示讚賞。我正在嘗試調整新 SQL VM 的大小。此時我還沒有獲得對 vSphere 或 vCenter 數據庫的訪問權限。

  • 使用任務管理器,因為我正在查看整體記憶體使用率,而不僅僅是 SQL Server。一位表現敏感的管理員警告我,要保持我的步伐非常輕鬆。

我看到的是,在任務管理器中,sqlserver.exe 使用了大約 163 Mb 的 RAM,如果我使用 procexp,相同的服務顯示使用的 RAM 不到 500 MB。

您永遠不應該查看任務管理器來檢查 SQL Server 記憶體使用率。它永遠不會向您顯示正確的結果。如果您使用的是 SQL Server 2008 及更高版本,則應使用 DMV sys.dm_os_process_memory來檢查 SQL Server 記憶體使用率。

select 
(physical_memory_in_use_kb/1024) as PhyMemory_usedby_Sqlserver_MB, 
(locked_page_allocations_kb/1024 ) as Locked_pages_used_Sqlserver_MB, 
(virtual_address_space_committed_kb/1024 ) as Total_MemoryUsed_in_MB, 
process_physical_memory_low, 
process_virtual_memory_low 
from sys. dm_os_process_memory

筆記:

PhyMemory_usedby_Sqlserver_MB是已送出的記憶體,由物理 RAM 支持。

Total_MemoryUsed_in_MB是 SQL Server 使用的記憶體(RAM 和頁面文件)

你犯了一個錯誤,很多“新手”在提到 SQL Server 使用的記憶體時可能會犯這個錯誤。如果執行 SQL Server 服務的帳戶存在記憶體中的鎖定頁面特權 (LPIM),它永遠不會在任務管理器中顯示正確的記憶體使用率。這是因為任務管理器只顯示通過可分頁的Virtual_alloc 函式Process Private Bytes分配的記憶體。現在,如果 SQL Server 服務帳戶具有 LPIM,則大部分記憶體分配將由AWE API完成。通過 AWE API 分配的記憶體不可分頁,因此不會顯示在任務管理器中,最終會顯示不同的(不正確的)值。

進一步閱讀:

鎖定頁面、AWE、任務管理器和工作集的樂趣……(CSS SQL Server 工程師)

引用自:https://dba.stackexchange.com/questions/108457