Sql-Server
SQL Server 使用的總記憶體(64 位)
我對這個主題的了解表明 perf counter SQL Server:Memory Manager: Total Server Memory 只為您提供緩衝池記憶體。在名為 sys.dm_os_process_memor 的 DMV 中有一個名為 physical_memory_in_use 的列,可為您提供物理工作集。
但我不確定…
是否有 DMV 或性能計數器可以告訴我 SQL Server 程序在 64 位 Windows 作業系統上執行的 64 位 SQL Server 2008 R2 和 SQL 2012 使用的總物理記憶體(緩衝池 + 非緩衝池,即 MemToLeave)?
我遇到了 Joe Sack 建議的這個解決方案(現在是 SQLSkills)
在“Private Bytes”中查找非緩衝池記憶體(MemToLeave)
在我看來(剛剛測試並且似乎正確)在 64 位 程序上:sqlservr:私有字節” 可以為您提供 SQL Server(緩衝池 + 非緩衝池)使用的總記憶體,考慮到記憶體中的鎖定頁面未啟用。
如果啟用記憶體中的鎖定頁面,那麼私有字節將為您提供 SQL Server 程序使用的總非緩衝池記憶體。
我不確定單個記憶體視圖,但您可以從兩個查詢中獲取資訊。第一個(取自Glenn Berry 的 DMV 查詢)利用sys.dm_os_buffer_descriptors並將按數據庫向您顯示緩衝池:
SELECT DB_NAME(database_id) AS [Database Name] ,CAST(COUNT(*) * 8/1024.0 AS DECIMAL (10,2)) AS [Cached Size (MB)] FROM sys.dm_os_buffer_descriptors WITH (NOLOCK) WHERE database_id not in (1,3,4) -- system databases AND database_id <> 32767 -- ResourceDB GROUP BY DB_NAME(database_id) ORDER BY [Cached Size (MB)] DESC OPTION (RECOMPILE);
我通過查看sys.dm_os_memory_cache_entries組合的第二個查詢向我顯示非緩衝池資訊:
select name ,sum(pages_allocated_count)/128.0 [Cache Size (MB)] from sys.dm_os_memory_cache_entries where pages_allocated_count > 0 group by name order by sum(pages_allocated_count) desc
有許多與記憶相關的 DMV
dm_os_memory_*
,用. 您可以使用這些來調查 SQL Server 在各個級別上如何使用記憶體。