sys.dm_xtp_system_memory_consumers (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
インメモリ OLTP のシステム レベルのメモリ コンシューマーを報告します。 これらのコンシューマーのメモリは、既定のプール (ユーザー スレッドに関連して割り当てられるとき) か内部プール (システム スレッドに関連して割り当てられるとき) を出所とします。
SELECT *
FROM sys.dm_xtp_system_memory_consumers;
詳細については、「 インメモリ OLTP (インメモリ最適化)」を参照してください。
列名 | 種類 | 説明 |
---|---|---|
memory_consumer_id | bigint | メモリ コンシューマーの内部 ID。 |
memory_consumer_type | int | 次のいずれかの値を持ち、メモリ コンシューマーの型を表す整数。 0 - 表示しないでください。 複数のコンシューマーのメモリ使用量を集計します。 1 - LOOKASIDE: システムのルック アサイドのメモリ使用量を追跡します。 2 - VARHEAP: 可変長ヒープのメモリ使用量を追跡します。 4 - IO ページ プール: IO 操作に使用されるシステム ページ プールのメモリ消費を追跡します。 |
memory_consumer_type_desc | nvarchar(16) | メモリ コンシューマーの種類の説明: 0 - 表示しない 1 - LOOKASIDE 2 - VARHEAP 4 - PGPOOL |
memory_consumer_desc | nvarchar(64) | メモリ コンシューマー インスタンスの説明。 VARHEAP: システム ヒープ。 汎用的な用途。 現在、ガベージ コレクション作業項目の割り当てにのみ使用されます。 -または- ルックアサイド ヒープ。 ルックアサイド リストに含まれる項目の数が事前に定義された上限 (通常は約 5,000 個の項目) に達した場合にルックアサイドで使用されます。 PGPOOL: IO システム プールの場合、システム 4K ページ プール、System 64-K ページ プール、および System 256-K ページ プールの 3 つの異なるサイズがあります。 |
lookaside_id | bigint | スレッドローカルのルックアサイド メモリ プロバイダーの ID。 |
pagepool_id | bigint | スレッドローカルのページ プール メモリ プロバイダーの ID。 |
allocated_bytes | bigint | このコンシューマーのために予約されたバイト数。 |
used_bytes | bigint | このコンシューマーによって使用されるバイト数。 varheap メモリ コンシューマーのみに適用されます。 SQL Server 2022 (16.x) 以降では、varheap メモリ コンシューマーとルックアサイド メモリ コンシューマーに適用されます。 |
allocation_count | int | 割り当ての数。 SQL Server 2022 (16.x) 以降では、ルックアサイド メモリ コンシューマーに対するシステム ヒープからの割り当ての数。 |
partition_count | int | 内部のみで使用します。 |
sizeclass_count | int | 内部のみで使用します。 |
min_sizeclass | int | 内部のみで使用します。 |
max_sizeclass | int | 内部のみで使用します。 |
memory_consumer_address | varbinary | コンシューマーの内部アドレス。 |
アクセス許可
サーバーに対する VIEW SERVER STATE 権限が必要です。
SQL Server 2022 以降でのアクセス許可
サーバーに対する VIEW SERVER PERFORMANCE STATE アクセス許可が必要です。
解説
SQL Server 2022 (16.x) では、この DMV には、メモリ最適化 TempDB メタデータ メモリの機能強化に固有の追加の列があります。
例
この例では、SQL Server インスタンスのシステム メモリ コンシューマーが出力されます。
SELECT memory_consumer_type_desc,
memory_consumer_desc,
allocated_bytes / 1024 as allocated_bytes_kb,
used_bytes / 1024 as used_bytes_kb,
allocation_count
FROM sys.dm_xtp_system_memory_consumers;
出力はシステム レベルのすべてのメモリ コンシューマーを示します。 たとえば、トランザクション ルックアサイドにコンシューマーがあります。
memory_consumer_type_desc memory_consumer_desc allocated_bytes_kb used_bytes_kb allocation_count
------------------------------- --------------------- ------------------- -------------- ----------------
VARHEAP Lookaside heap 0 0 0
VARHEAP System heap 768 0 2
LOOKASIDE GC transaction map entry 64 64 910
LOOKASIDE Redo transaction map entry 128 128 1260
LOOKASIDE Recovery table cache entry 448 448 8192
LOOKASIDE Transaction recent rows 3264 3264 4444
LOOKASIDE Range cursor 0 0 0
LOOKASIDE Hash cursor 3200 3200 11070
LOOKASIDE Transaction save-point set entry 0 0 0
LOOKASIDE Transaction partially-inserted rows set 704 704 1287
LOOKASIDE Transaction constraint set 576 576 1940
LOOKASIDE Transaction save-point set 0 0 0
LOOKASIDE Transaction write set 704 704 672
LOOKASIDE Transaction scan set 320 320 156
LOOKASIDE Transaction read set 704 704 343
LOOKASIDE Transaction 4288 4288 1459
PGPOOL System 256K page pool 5120 5120 20
PGPOOL System 64K page pool 0 0 0
PGPOOL System 4K page pool 24 24 6
システム アロケーターが使用するメモリの合計を表示するには、以下を実行します。
SELECT SUM(allocated_bytes) / (1024 * 1024) AS total_allocated_MB,
SUM(used_bytes) / (1024 * 1024) AS total_used_MB
FROM sys.dm_xtp_system_memory_consumers;
結果セットは次のようになります。
total_allocated_MB total_used_MB
-------------------- --------------------
2 2