テーブルはどのくらいのメモリを使用していますか?


9

SQL Server(2005以降)でテーブルが使用しているメモリの量を調べる方法はありますか?

たとえば、3000万レコードのテーブルがあるとします。インデックス、データ、テキスト/イメージページなど、このテーブルに属するページが現在バッファキャッシュにあるページ数を教えてください。

私はこのクエリをPinal Daveが見つけましたが、このクエリはインデックスによって割り当てられたページのみを返すようです(クラスター化されているかどうかにかかわらず)。


2
sp_spaceusedは、メモリ/バッファキャッシュのデータではなく、ディスクに保存されているサイズに関するデータを返します。
マークS.ラスムッセン

回答:


8
with bd as (
    select count(*) as pages_in_memory, bd.allocation_unit_id
    from sys.dm_os_buffer_descriptors bd
    where bd.database_id = db_id()
    group by bd.allocation_unit_id)
select p.object_id,
    p.index_id,
    p.partition_number,
    bd.pages_in_memory,
    au.total_pages as pages_on_disk,
    au.type_desc
from bd 
join sys.allocation_units au 
    on au.allocation_unit_id = bd.allocation_unit_id
join sys.partitions p
    on p.partition_id = au.container_id

回答にコメントを追加すると、選択されます。現状では、それは答えではなく、単なるコードの一部です。(はい、私はそれが機能することを知っていますが、それは私のポイントではありません。)
ivanmp
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.