sys.dm_exec_query_resource_semaphores (Transact-SQL)
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
SQL Server の現在のクエリ リソース セマフォの状態に関する情報を返します。 sys.dm_exec_query_resource_semaphores は、一般的なクエリ実行メモリの状態を提供し、システムが十分なメモリにアクセスできるかどうかを判断できます。 このビューは、 sys.dm_os_memory_clerks から取得したメモリ情報を補完して、サーバーのメモリ状態の全体像を提供します。 sys.dm_exec_query_resource_semaphores は、通常のリソース セマフォの 1 つの行と、小さいクエリ リソース セマフォの別の行を返します。 小さいクエリ セマフォには、次の 2 つの要件があります。
要求されるメモリ許可は 5 MB 未満にする必要があります
クエリ コストは 3 コスト単位未満にする必要があります
Note
これを Azure Synapse Analytics または Analytics Platform System (PDW) から呼び出すには、 sys.dm_pdw_nodes_exec_query_resource_semaphores
という名前を使用します。 この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。
列名 | データ型 | 説明 |
---|---|---|
resource_semaphore_id | smallint | リソース セマフォの一意でない ID。 通常のリソース セマフォの場合は 0、小クエリ リソース セマフォの場合は 1。 |
target_memory_kb | bigint | 使用目標を KB 単位で付与します。 |
max_target_memory_kb | bigint | 最大許容対象メモリ (KB 単位)。 小クエリ リソース セマフォの場合は NULL。 |
total_memory_kb | bigint | リソース セマフォによって保持されるメモリ (KB 単位)。 システムがメモリ不足の場合、または強制最小メモリが頻繁に許可される場合、この値は target_memory_kb 値または max_target_memory_kb 値より大きくなる可能性があります。 合計メモリは、使用可能なメモリと付与されたメモリの合計です。 |
available_memory_kb | bigint | 新しい許可で使用可能なメモリ (KB 単位)。 |
granted_memory_kb | bigint | 付与されたメモリの合計 (KB 単位)。 |
used_memory_kb | bigint | 許可されたメモリの物理的に使用される部分 (KB 単位)。 |
grantee_count | int | 許可が満たされているアクティブなクエリの数。 |
waiter_count | int | 許可条件が満たされるのを待機しているクエリの数。 |
timeout_error_count | bigint | サーバーが起動した後のタイムアウト エラーの合計数。 小クエリ リソース セマフォの場合は NULL。 |
forced_grant_count | bigint | サーバーの起動以降の強制最小メモリ許可の合計数。 小クエリ リソース セマフォの場合は NULL。 |
pool_id | int | このリソース セマフォが属するリソース プールの ID。 |
pdw_node_id | int | 適用対象: Azure Synapse Analytics、Analytics Platform System (PDW) このディストリビューションがオンになっているノードの識別子。 |
アクセス許可
SQL Server と SQL Managed Instance では、VIEW SERVER STATE
アクセス許可が必要です。
SQL Database の Basic、S0、S1 サービス対象、および Elastic Pool のデータベースの場合、サーバー管理者アカウント、Microsoft Entra 管理者アカウント、または ##MS_ServerStateReader##
サーバー ロールのメンバーシップが必要です。 他のすべての SQL Database サービス目標では、データベースに対する VIEW DATABASE STATE
アクセス許可または ##MS_ServerStateReader##
サーバー ロールのメンバーシップのいずれかが必要です。
SQL Server 2022 以降でのアクセス許可
サーバーに対する VIEW SERVER PERFORMANCE STATE アクセス許可が必要です。
解説
ORDER BY または集計を含む動的管理ビューを使用するクエリでは、メモリ消費量が増加し、トラブルシューティングの問題に寄与する可能性があります。
トラブルシューティングには sys.dm_exec_query_resource_semaphores を使用しますが、将来のバージョンの SQL Server を使用するアプリケーションには含めないでください。
リソース ガバナー機能を使用すると、データベース管理者は、最大 64 個のプールを含むリソース プール間でサーバー リソースを分散できます。 SQL Server 2012 (11.x) 以降では、各プールは小さな独立したサーバー インスタンスのように動作し、2 つのセマフォを必要とします。
参照
実行関連の動的管理ビューと関数 (Transact-SQL)
sys.dm_exec_query_memory_grants (Transact-SQL)