この件に関する私の知識は、パフォーマンスカウンターSQL Server:Memory Manager:Total Server Memoryはバッファプールメモリしか提供しないことを示唆しています。 sys.dm_os_process_memorという名前のDMVにphysical_memory_in_useという列があり、物理的なワーキングセットを提供します。
しかし、私にはわかりません...
64ビットのWindows OSで実行されている64ビットのSQL Server 2008 R2およびSQL 2012のSQL Serverプロセスで使用される合計(バッファープール+非バッファープール、つまりMemToLeave)物理メモリを教えてくれるDMVまたはパフォーマンスカウンターはありますか?
Joe Sack(SQLSkills now)によって提案されたこのソリューションに出くわしました
「プライベートバイト」で非バッファプールメモリ(MemToLeave)を検索
64ビットではプロセス:sqlservr:Private Bytes "がSQL Serverが使用する合計メモリを提供できるように見えます(テスト済みであり、正しいようです)バッファプール+非バッファプール)は、メモリ内のロックページを考慮して有効化されていません。
メモリ内のページのロックが有効になっている場合、プライベートバイトよりも、SQLサーバープロセスで使用される非バッファープールメモリの合計が得られます。
メモリの単一のビューについてはわかりませんが、2つのクエリから情報を取得できます。最初の( 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 を調べてまとめた2番目のクエリは、非バッファープール情報を表示します。
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によるメモリのさまざまなレベルでの使用状況を調査できます。