sys.dm_xtp_system_memory_consumers (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure 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