sys.dm_os_memory_objects (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
SQL Server によって現在割り当てられているメモリ オブジェクトを返します。 sys.dm_os_memory_objectsを使用して、メモリ使用量を分析し、メモリ リークの可能性を特定できます。
Note
これを Azure Synapse Analytics または Analytics Platform System (PDW) から呼び出すには、 sys.dm_pdw_nodes_os_memory_objectsという名前を使用します。 この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。
列名 | データ型 | 説明 |
---|---|---|
memory_object_address | varbinary(8) | メモリ オブジェクトのアドレス。 NULL 値は許可されません。 |
parent_address | varbinary(8) | 親メモリ オブジェクトのアドレス。 NULL 値が許可されます。 |
pages_allocated_count | int | 適用対象: SQL Server 2008 (10.0.x) から SQL Server 2008 R2 (10.50.x)。 メモリ オブジェクトによって割り当てられているページ数。 NULL 値は許可されません。 |
pages_in_bytes | bigint | 適用対象: SQL Server 2012 (11.x) 以降。 メモリ オブジェクトのこのインスタンスによって割り当てられるメモリの量 (バイト単位)。 NULL 値は許可されません。 |
creation_options | int | 内部のみで使用します。 NULL 値が許可されます。 |
bytes_used | bigint | 内部のみで使用します。 NULL 値が許可されます。 |
type | nvarchar(60) | メモリ オブジェクトの種類。 これは、このメモリ オブジェクトが属しているコンポーネント、またはメモリ オブジェクトの関数を示します。 NULL 値が許可されます。 |
name | varchar(128) | 内部のみで使用します。 Null 許容。 |
memory_node_id | smallint | メモリ オブジェクトが使用しているメモリ ノードの ID。 NULL 値は許可されません。 |
creation_time | datetime | 内部のみで使用します。 NULL 値が許可されます。 |
max_pages_allocated_count | int | 適用対象: SQL Server 2008 (10.0.x) から SQL Server 2008 R2 (10.50.x)。 このメモリ オブジェクトによって割り当てられたページの最大数。 NULL 値は許可されません。 |
page_size_in_bytes | int | 適用対象: SQL Server 2012 (11.x) 以降。 メモリ オブジェクトによって割り当てられているのページのサイズ (バイト単位)。 NULL 値は許可されません。 |
max_pages_in_bytes | bigint | このメモリ オブジェクトによって使用されたメモリの最大量。 NULL 値は許可されません。 |
page_allocator_address | varbinary(8) | ページ アロケーターのメモリ アドレス。 NULL 値は許可されません。 詳しくは「sys.dm_os_memory_clerks (Transact-SQL)」をご覧ください。 |
creation_stack_address | varbinary(8) | 内部のみで使用します。 NULL 値が許可されます。 |
sequence_num | int | 内部のみで使用します。 NULL 値が許可されます。 |
partition_type | int | 適用対象: SQL Server 2016 (13.x) 以降。 パーティションの種類: 0 - パーティション分割できないメモリ オブジェクト 1 - 現在パーティション分割されていないパーティション分割可能なメモリ オブジェクト 2 - NUMA ノードによってパーティション分割されたパーティション分割可能なメモリ オブジェクト。 1 つの NUMA ノードがある環境では、これは 1 に相当します。 3 - CPU によってパーティション分割されたパーティション分割可能なメモリ オブジェクト。 |
contention_factor | real | 適用対象: SQL Server 2016 (13.x) 以降。 このメモリ オブジェクトの競合を指定する値。0 は競合がないことを意味します。 この値は、指定された数のメモリ割り当てが、その期間中の競合を反映して行われるたびに更新されます。 スレッド セーフなメモリ オブジェクトにのみ適用されます。 |
waiting_tasks_count | bigint | 適用対象: SQL Server 2016 (13.x) 以降。 このメモリ オブジェクトの待機回数。 このカウンターは、このメモリ オブジェクトからメモリが割り当てられるたびにインクリメントされます。 インクリメントは、このメモリ オブジェクトへのアクセスを現在待機しているタスクの数です。 スレッド セーフなメモリ オブジェクトにのみ適用されます。 これは、正確性を保証しないベスト エフォート値です。 |
exclusive_access_count | bigint | 適用対象: SQL Server 2016 (13.x) 以降。 このメモリ オブジェクトが排他的にアクセスされた頻度を指定します。 スレッド セーフなメモリ オブジェクトにのみ適用されます。 これは、正確性を保証しないベスト エフォート値です。 |
pdw_node_id | int | 適用対象: Azure Synapse Analytics、Analytics Platform System (PDW) このディストリビューションがオンになっているノードの識別子。 |
partition_type、 contention_factor、 waiting_tasks_count、および exclusive_access_count はまだ SQL Database に実装されていません。
アクセス許可
SQL Server と SQL Managed Instance では、VIEW SERVER STATE
アクセス許可が必要です。
SQL Database Basic、S0、および S1 サービス目標、および弾性プール内のデータベースの場合サーバー管理者アカウント、Microsoft Entra 管理者アカウント、または##MS_ServerStateReader##
サーバー ロールのメンバーシップが必要です。 他のすべての SQL Database サービス目標では、データベースに対する VIEW DATABASE STATE
アクセス許可または ##MS_ServerStateReader##
サーバー ロールのメンバーシップのいずれかが必要です。
SQL Server 2022 以降でのアクセス許可
サーバーに対する VIEW SERVER PERFORMANCE STATE アクセス許可が必要です。
解説
メモリ オブジェクトはヒープであり、 割り当ての粒度はメモリ クラークよりも細かくなります。 SQL Server コンポーネントでは、メモリ クラークの代わりにメモリ オブジェクトが使用されます。 メモリ オブジェクトは、メモリ クラークのページ アロケーター インターフェイスを使用してページを割り当てます。 メモリ オブジェクトは、仮想または共有メモリ インターフェイスを使用しません。 割り当てパターンに応じて、コンポーネントでは各種メモリ オブジェクトを作成し、任意のサイズの領域を割り当てることができます。
メモリ オブジェクトの一般的なページ サイズは 8 KB です。 ただし、増分メモリ オブジェクトには、512 バイトから 8 KB の範囲のページ サイズを設定できます。
Note
ページ サイズは最大割り当てではありません。 メモリ クラークによって実装されたページ アロケーターでサポートされている割り当ての粒度です。 メモリ オブジェクトから、8 KB を超える割り当てを要求することができます。
例
次の例では、それぞれのメモリ オブジェクトの種類によって割り当てられたメモリのサイズを返します。
SELECT SUM (pages_in_bytes) as 'Bytes Used', type
FROM sys.dm_os_memory_objects
GROUP BY type
ORDER BY 'Bytes Used' DESC;
GO
関連項目
SQL Server オペレーティングシステム関連の動的管理ビュー (Transact-sql)
sys.dm_os_memory_clerks (Transact-SQL)