sys.dm_exec_query_resource_semaphores (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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 サービス目標、およびエラスティック プール内のデータベースの場合、サーバー管理者アカウント、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)