対象者:SQL Server 2016 (13.x) およびそれ以降のバージョン
Azure SQL Database
Azure SQL Managed Instance
SQL Database in Microsoft Fabric
同時実行クエリの最適化を減らすために使用されるリソース セマフォの現在の状態を返します。
| Column | タイプ | 説明 |
|---|---|---|
pool_id |
int | リソース ガバナーのリソース プール ID |
name |
sysname | コンパイル ゲート名 (Small Gateway、Medium Gateway、Big Gateway) |
max_count |
int | コンカレント コンパイルの最大構成数 |
active_count |
int | このゲート内の現在アクティブなコンパイル数 |
waiter_count |
int | このゲート内の待機者の数 |
threshold_factor |
bigint | クエリの最適化で使用される最大メモリ部分を定義するしきい値係数。 小さいゲートウェイの場合、threshold_factorは、小さなゲートウェイでアクセスする必要がある前に、1 つのクエリに対するオプティマイザーの最大メモリ使用量をバイト単位で示します。 中規模ゲートウェイとビッグ ゲートウェイの場合、threshold_factorは、このゲートで使用可能なサーバー メモリの合計の部分を示します。 これは、ゲートのメモリ使用量のしきい値を計算するときに除数として使用されます。 |
threshold |
bigint | 次のしきい値メモリ (バイト単位)。 メモリ消費量がこのしきい値に達した場合、クエリはこのゲートウェイにアクセスするために必要です。 クエリがこのゲートウェイにアクセスする必要がない場合に -1 します。 |
is_active |
bit | クエリが現在のゲートを通過するために必要かどうか。 |
Permissions
SQL ServerにはVIEWが必要ですサーバー上のSERVER STATE権限。
Azure SQL DatabaseにはVIEWDATABASEが必要ですデータベースにSTATE許可を残します。
SQL Server 2022 以降でのアクセス許可
サーバー VIEW PERFORMANCE STATE権限が必要です。
注釈
SQL Server では、階層化ゲートウェイアプローチを使用して、許可される同時コンパイルの数を減らします。 小、中、大を含む 3 つのゲートウェイが使用されます。 ゲートウェイは、大きなコンパイル メモリを必要とするコンシューマーによって、全体的なメモリ リソースの枯渇を防ぐのに役立ちます。
ゲートウェイを待機すると、コンパイルが遅れます。 コンパイルの遅延に加えて、要求の削減には、待機の種類の累積RESOURCE_SEMAPHORE_QUERY_COMPILE関連付けられます。 RESOURCE_SEMAPHORE_QUERY_COMPILE待機の種類は、クエリがコンパイルに大量のメモリを使用しており、そのメモリが使い果たされていることを示している可能性があります。 または、全体的に十分なメモリが使用可能である可能性がありますが、特定のゲートウェイで使用可能なユニットが使い果たされます。
sys.dm_exec_query_optimizer_memory_gateways の出力は、クエリ実行プランをコンパイルするためのメモリが不足しているシナリオのトラブルシューティングに使用できます。
Examples
A. リソース セマフォの統計を表示する
SQL Server のこのインスタンスの現在のオプティマイザー メモリ ゲートウェイの統計情報は何ですか?
SELECT [pool_id], [name], [max_count], [active_count],
[waiter_count], [threshold_factor], [threshold],
[is_active]
FROM sys.dm_exec_query_optimizer_memory_gateways;
関連するコンテンツ
- システム動的管理ビュー
- 実行関連の動的管理ビューと関数 (Transact-SQL)
- DBCC MEMORYSTATUS コマンドを使用して SQL Server 2005 のメモリ使用量を監視する方法
- SQL Server 2014 のRESOURCE_SEMAPHORE_QUERY_COMPILEで大規模なクエリ コンパイル待機