sys.dm_db_xtp_memory_consumers (Transact-SQL)

適用対象:データベース Azure SQL Managed Instance Azure SQL SQL Server (サポートされているすべてのバージョン)

インメモリ OLTP データベース エンジンのデータベース レベルのメモリ コンシューマーを報告します。 ビューは、データベース エンジンが使用する各メモリ コンシューマーの行を返します。 この DMV を使用して、メモリがさまざまな内部オブジェクトにどのように分散されているかを確認します。

詳細については、「 インメモリ OLTP (インメモリ最適化)」を参照してください。

列名 データ型 説明
memory_consumer_id bigint メモリ コンシューマーの ID (内部)。
memory_consumer_type int メモリ コンシューマーの種類:

0=集計 (2 つ以上のコンシューマーのメモリ使用量を集計します。表示しないでください。)

2=VARHEAP (可変長ヒープのメモリ消費量を追跡します)。

3=HASH (インデックスのメモリ使用量を追跡します)

5=DB ページ プール (ランタイム操作に使用されるデータベース ページ プールのメモリ消費量を追跡します。たとえば、テーブル変数やシリアル化可能なスキャンなどです。データベースごとにこの種類のメモリ コンシューマーは 1 つだけです)。
memory_consumer_type_desc nvarchar(64) メモリ コンシューマーの種類: VARHEAP、HASH、PGPOOL。

0 - (表示しないでください。

2 - VARHEAP

3 - HASH

5 - PGPOOL
memory_consumer_desc nvarchar(64) メモリ コンシューマー インスタンスの説明。

VARHEAP:
データベース ヒープ。 データベース (行) にユーザー データを割り当てるために使用されます。
データベース システム ヒープ。 メモリ ダンプに含められ、ユーザー データを含まないデータベース データを割り当てるために使用します。
範囲インデックス ヒープ。 BW ページを割り当てるために範囲インデックスによって使用されるプライベート ヒープ。

HASH: object_idはテーブルとハッシュ インデックス自体index_idを示しているため、説明はありません。

PGPOOL: データベースの場合、データベース 64K ページ プールは 1 ページ プールのみです。
object_id bigint 割り当てられたメモリが属性付けされるオブジェクト ID。 システム オブジェクトの負の値。
xtp_object_id bigint メモリ最適化テーブルのオブジェクト ID。
index_id int コンシューマーのインデックス ID (存在する場合)。 ベース テーブルの場合は NULL。
allocated_bytes bigint このコンシューマーのために予約されたバイト数。
used_bytes bigint このコンシューマーによって使用されるバイト数。 VARHEAP のみに適用されます。
allocation_count int 割り当ての数。
partition_count int 内部使用のみです。
sizeclass_count int 内部使用のみです。
min_sizeclass int 内部使用のみです。
max_sizeclass int 内部使用のみです。
memory_consumer_address varbinary コンシューマーの内部アドレス。 内部使用専用です。
xtp_object_id bigint メモリ最適化テーブルに対応するIn-Memory OLTP オブジェクト ID。

注釈

出力では、データベース レベルのアロケーターは、ユーザー テーブル、インデックス、およびシステム テーブルを参照します。 VARHEAP with object_id = NULL は、可変長列を持つテーブルに割り当てられたメモリを参照します。

アクセス許可

現在のデータベースに対する VIEW DATABASE STATE 権限がある場合は、すべての行が返されます。 それ以外の場合は、空の行セットが返されます。

VIEW DATABASE 権限がない場合は、SELECT 権限を持っているテーブル内の行に対するすべての列が返されます。

システム テーブルは、VIEW DATABASE STATE 権限を持つユーザーにのみ返されます。

全般的な解説

メモリ最適化テーブルに列ストア インデックスがある場合、システムは、一部のメモリを消費するいくつかの内部テーブルを使用して、列ストア インデックスのデータを追跡します。 これらの内部テーブルとそのメモリ消費量を示すサンプル クエリの詳細については、「 sys.memory_optimized_tables_internal_attributes (Transact-SQL)」を参照してください。

現在のデータベース内のメモリ コンシューマーにクエリを実行します。

-- memory consumers (database level)  
SELECT OBJECT_NAME(object_id), *   
FROM sys.dm_db_xtp_memory_consumers;  

ユーザー シナリオ

-- memory consumers (database level)  
  
select  convert(char(10), object_name(object_id)) as Name,   
convert(char(10),memory_consumer_type_desc ) as memory_consumer_type_desc, object_id,index_id, allocated_bytes,  used_bytes   
from sys.dm_db_xtp_memory_consumers  

列の一部の出力例を次に示します。 データベース レベルのアロケーターは、ユーザー テーブル、インデックス、およびシステム テーブルを参照します。 VARHEAP と object_id = NULL 共に (最後の行) は、テーブルのデータ行に割り当てられたメモリを参照します (この例では、次 t1のようになります)。 割り当てられたバイト数は、MB 換算で 1340 MB です。

Name       memory_consumer_type_desc object_id   index_id    allocated_bytes      used_bytes  
---------- ------------------------- ----------- ----------- -------------------- --------------------  
t3         HASH                      629577281   2           8388608              8388608  
t2         HASH                      597577167   2           8388608              8388608  
t1         HASH                      565577053   2           1048576              1048576  
NULL       HASH                      -6          1           2048                 2048  
NULL       VARHEAP                   -6          NULL        0                    0  
NULL       HASH                      -5          3           8192                 8192  
NULL       HASH                      -5          2           8192                 8192  
NULL       HASH                      -5          1           8192                 8192  
NULL       HASH                      -4          1           2048                 2048  
NULL       VARHEAP                   -4          NULL        0                    0  
NULL       HASH                      -3          1           2048                 2048  
NULL       HASH                      -2          2           8192                 8192  
NULL       HASH                      -2          1           8192                 8192  
NULL       VARHEAP                   -2          NULL        196608               26496  
NULL       HASH                      0           1           2048                 2048  
NULL       PGPOOL                    0           NULL        0                    0  
NULL       VARHEAP                   NULL        NULL        1405943808           1231220560  
  
(17 row(s) affected)  

この DMV から割り当てられ、使用されるメモリの合計は、 sys.dm_db_xtp_table_memory_stats (Transact-SQL) のオブジェクト レベルと同じです。

select  sum(allocated_bytes)/(1024*1024) as total_allocated_MB,   
        sum(used_bytes)/(1024*1024) as total_used_MB  
from sys.dm_db_xtp_memory_consumers;
total_allocated_MB   total_used_MB  
-------------------- --------------------  
1358                 1191  

こちらもご覧ください

次の手順