sys.dm_exec_query_optimizer_memory_gateways(Transact-SQL)

対象者:SQL Server 2016 (13.x) およびそれ以降のバージョン Azure SQL DatabaseAzure SQL Managed InstanceSQL 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;