sys.dm_db_xtp_memory_consumers (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
インメモリ OLTP データベース エンジンのデータベース レベルのメモリ コンシューマーを報告します。 このビューは、データベース エンジンが使用するメモリ コンシューマーごとに 1 行を返します。 この DMV を使用して、さまざまな内部オブジェクト間でメモリがどのように分散されているかを確認します。
詳細については、「 In-Memory OLTP の概要と使用シナリオを参照してください。
Note
このシステム動的管理ビューの出力は、インストールされている SQL Server のバージョンによって異なる場合があります。
列名 | データ型 | 説明 |
---|---|---|
memory_consumer_id |
bigint | メモリ コンシューマーの ID (内部)。 |
memory_consumer_type |
int | メモリ コンシューマーの種類: 0 = 集計。 (2 つ以上のコンシューマーのメモリ使用量を集計します。表示しないでください)。) 2 = VARHEAP (可変長ヒープのメモリ消費量を追跡します)。3 = HASH (インデックスのメモリ消費量を追跡します)。4 = PGPOOL (DB ページ プール: ランタイム操作に使用されるデータベース ページ プールのメモリ消費量を追跡します。たとえば、テーブル変数やシリアル化可能なスキャンなどです。この種類のメモリ コンシューマーは、データベースごとに 1 つだけ存在します)。 |
memory_consumer_type_desc |
nvarchar(64) | メモリ コンシューマーの種類: VARHEAP 、 HASH 、または PGPOOL 。0 - (表示しないでください) 2- VARHEAP 3- HASH 4- PGPOOL |
memory_consumer_desc |
nvarchar(64) | メモリ コンシューマー インスタンスの説明。 詳細については、次の表を参照してください。 |
object_id |
bigint | 割り当てられたメモリが属性付けされるオブジェクト ID。 システム オブジェクトの負の値。 |
xtp_object_id |
bigint | メモリ最適化テーブルに対応するインメモリ OLTP オブジェクト 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 | コンシューマーの内部アドレス。 内部使用のみ。 |
次の表では、 memory_consumer_type
列で指定されたメモリ コンシューマーについて説明します。
メモリ コンシューマー | 説明 | Type |
---|---|---|
256K page pool |
チェックポイント アクティビティ中に使用されるメモリ プール。 | PGPOOL |
4K page pool |
チェックポイント アクティビティ中に使用されるメモリ プール。 | PGPOOL |
Checkpoint table |
内部のみで使用します。 | VARHEAP |
Ckpt file table |
内部のみで使用します。 | VARHEAP |
Ckpt file watermark table |
内部のみで使用します。 | VARHEAP |
Database internal heap |
メモリ ダンプに含まれており、ユーザー データを含まないデータベース データを割り当てるために使用されます。 | VARHEAP |
Database user heap |
データベース (行) にユーザー データを割り当てるために使用されます。 | VARHEAP |
Encryption table |
内部のみで使用します。 | VARHEAP |
Hash index |
インデックスのメモリ消費量を追跡します。 object_id は、テーブルとハッシュ インデックス自体のindex_id を示します。 |
HASH |
Large Rows File table |
内部のみで使用します。 | VARHEAP |
LOB Page Allocator |
大きな行で使用されるヒープ メモリ。 | VARHEAP |
Logical range index partition table |
内部のみで使用します。 | VARHEAP |
Logical root fragment table |
内部のみで使用します。 | VARHEAP |
Logical Root table |
内部のみで使用します。 | VARHEAP |
Logical Sequence Object table |
内部のみで使用します。 | VARHEAP |
Physical range index partition table |
内部のみで使用します。 | VARHEAP |
Physical root fragment table |
内部のみで使用します。 | VARHEAP |
Physical Root table |
内部のみで使用します。 | VARHEAP |
Physical Sequence object table |
内部のみで使用します。 | VARHEAP |
Range index heap |
範囲インデックスで Bw ツリー ページを割り当てるために使用されるプライベート ヒープ。 | VARHEAP |
Storage internal heap |
内部のみで使用します。 | VARHEAP |
Storage user heap |
内部のみで使用します。 | VARHEAP |
Table heap |
メモリ内テーブルで使用されるヒープ メモリ。 | VARHEAP |
Tail cache 256K page pool |
内部のみで使用します。 | PGPOOL |
Tx Segment table |
内部のみで使用します。 | VARHEAP |
解説
メモリ最適化テーブルに列ストア インデックスがある場合、システムは、いくつかのメモリを消費するいくつかの内部テーブルを使用して、列ストア インデックスのデータを追跡します。 これらの内部テーブルとそのメモリ消費量を示すサンプル クエリの詳細については、「 sys.memory_optimized_tables_internal_attributes (Transact-SQL)」を参照してください。
アクセス許可
現在のデータベースに対する VIEW DATABASE STATE 権限がある場合は、すべての行が返されます。 それ以外の場合は、空の行セットが返されます。
VIEW DATABASE 権限がない場合は、SELECT 権限を持つテーブル内の行のすべての列が返されます。
SQL Server 2019 (15.x) 以前のバージョンでは、VIEW DATABASE STATE 権限を持つユーザーに対してのみシステム テーブルが返されます。
SQL Server 2022 (16.x) 以降のバージョンでは、データベースに対する VIEW DATABASE PERFORMANCE STATE 権限が必要です。
例
現在のデータベース内のメモリ コンシューマーにクエリを実行する
メモリ最適化テーブルを含むサンプル WideWorldImporters
データベースに対して、次のクエリを実行します。
SELECT CONVERT(CHAR(10), OBJECT_NAME(object_id)) AS Name,
memory_consumer_type_desc,
memory_consumer_desc,
object_id,
index_id,
allocated_bytes,
used_bytes
FROM sys.dm_db_xtp_memory_consumers;
結果セットは次のとおりです。
Name memory_consumer_type_desc memory_consumer_desc object_id index_id allocated_bytes used_bytes
---------- ------------------------- -------------------------------------- ----------- ----------- ----------------- ------------
NULL VARHEAP Range index heap -15 1 131072 176
NULL VARHEAP Physical range index partition table -15 NULL 0 0
NULL VARHEAP Range index heap -14 2 131072 192
NULL VARHEAP Range index heap -14 1 131072 208
NULL VARHEAP Large Rows File table -14 NULL 0 0
NULL HASH Hash index -13 1 2048 2048
NULL VARHEAP Encryption table -13 NULL 0 0
NULL HASH Hash index -10 2 32768 32768
NULL HASH Hash index -10 1 32768 32768
NULL VARHEAP Tx Segment table -10 NULL 65536 544
NULL HASH Hash index -11 1 32768 32768
NULL VARHEAP Checkpoint table -11 NULL 131072 320
NULL HASH Hash index -12 1 8192 8192
NULL VARHEAP Ckpt file table -12 NULL 131072 3120
NULL HASH Hash index -9 1 2048 2048
NULL VARHEAP Ckpt file watermark table -9 NULL 131072 1280
NULL VARHEAP Range index heap -7 1 262144 976
NULL VARHEAP Physical Sequence Object table -7 NULL 65536 864
NULL HASH Hash index -3 1 2048 2048
NULL VARHEAP Physical root fragment table -3 NULL 0 0
NULL HASH Hash index 0 2 8192 8192
NULL HASH Hash index 0 1 32768 32768
NULL VARHEAP Physical Root table NULL NULL 327680 12160
NULL PGPOOL Tail cache 256K page pool 0 NULL 262144 262144
NULL PGPOOL 256K page pool 0 NULL 35389440 18874368
NULL PGPOOL 64K page pool 0 NULL 131072 65536
NULL PGPOOL 4K page pool 0 NULL 49152 40960
NULL VARHEAP Storage internal heap NULL NULL 786432 4816
NULL VARHEAP Storage user heap NULL NULL 262144 22496
ColdRoomTe VARHEAP Range index heap 1179151246 3 196608 800
ColdRoomTe VARHEAP Range index heap 1179151246 2 196608 800
memory_opt VARHEAP Range index heap 1211151360 2 131072 208
VehicleTem VARHEAP Range index heap 1243151474 2 11796480 1181824
ColdRoomTe VARHEAP Table heap 1179151246 NULL 65536 384
memory_opt VARHEAP Table heap 1211151360 NULL 0 0
VehicleTem VARHEAP Table heap 1243151474 NULL 33423360 32802112
VehicleTem VARHEAP Range index heap 1243151474 2 131072 160
VehicleTem VARHEAP LOB Page Allocator 1243151474 NULL 0 0
VehicleTem VARHEAP Table heap 1243151474 NULL 0 0
NULL VARHEAP Range index heap -15 1 327680 176
NULL VARHEAP Logical range index partition table -15 NULL 0 0
NULL HASH Hash index -7 1 32768 32768
NULL VARHEAP Logical Sequence Object table -7 NULL 65536 600
NULL HASH Hash index -3 1 2048 2048
NULL VARHEAP Logical root fragment table -3 NULL 0 0
NULL HASH Hash index 0 1 32768 32768
NULL VARHEAP Logical Root table NULL NULL 327680 11120
NULL PGPOOL Tail cache 256K page pool 0 NULL 262144 0
NULL PGPOOL 256K page pool 0 NULL 10485760 0
NULL PGPOOL 64K page pool 0 NULL 131072 0
NULL PGPOOL 4K page pool 0 NULL 32768 0
NULL VARHEAP Database internal heap NULL NULL 1048576 8016
NULL VARHEAP Database user heap NULL NULL 65536 1024
この DMV から割り当てられ、使用されるメモリの合計は、 sys.dm_db_xtp_table_memory_statsのオブジェクト レベルと同じです。
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
------------------ --------------------
92 51