適用対象: SQL Server 2022 (16.x) 以降のバージョン
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric の SQL Database
元のパラメーター化されたクエリ (親クエリとも呼ばれます)、ディスパッチャー プラン、およびその子クエリバリアントの間の親子関係に関する情報が含まれます。 このカタログビューは、ディスパッチャに関連するすべてのクエリバリアントと元のパラメータ化されたクエリを示します。 クエリのバリエーションはsys.query_store_queryから見ると同じquery_hash値を共有します。
sys.query_store_queryとsys.query_store_runtime_statsでsys.query_store_query_variantを結合すると、入力値だけで異なるクエリの集計リソース使用統計を得ることができます。
| 列名 | データ型 | 説明 |
|---|---|---|
query_variant_query_id |
bigint |
主キー パラメーター化された機密性の高いクエリバリアントの ID。 |
parent_query_id |
bigint |
元のパラメーター化されたクエリの ID。 |
dispatcher_plan_id |
bigint |
パラメーター機密性の高いプラン最適化ディスパッチャー プランの ID。 |
解説
複数のクエリバリアントが単一のディスパッチプランに関連付けられるため、複数のプランがクエリバリアントに属し、親クエリの全体的なリソース使用統計に貢献します。 クエリバリアントのディスパッチプランは、クエリ ストアにランタイム統計を生成しません。 そのため、既存のクエリ ストアクエリだけでは、sys.query_store_query_variantビューに追加の結合を加えない限り、全体の統計情報収集には不十分です。
アクセス許可
VIEW DATABASE STATE アクセス許可が必要です。
SQL Server 2022 以降でのアクセス許可
データベースに対する VIEW DATABASE PERFORMANCE STATE 権限が必要です。
例
バリアント情報クエリ ストア表示する
SELECT
qspl.plan_type_desc AS query_plan_type,
qspl.plan_id as query_store_planid,
qspl.query_id as query_store_queryid,
qsqv.query_variant_query_id as query_store_variant_queryid,
qsqv.parent_query_id as query_store_parent_queryid,
qsqv.dispatcher_plan_id as query_store_dispatcher_planid,
OBJECT_NAME(qsq.object_id) as module_name,
qsq.query_hash,
qsqtxt.query_sql_text,
convert(xml,qspl.query_plan)as show_plan_xml,
qsrs.last_execution_time as last_execution_time,
qsrs.count_executions AS number_of_executions,
qsq.count_compiles AS number_of_compiles
FROM sys.query_store_runtime_stats AS qsrs
JOIN sys.query_store_plan AS qspl
ON qsrs.plan_id = qspl.plan_id
JOIN sys.query_store_query_variant qsqv
ON qspl.query_id = qsqv.query_variant_query_id
JOIN sys.query_store_query as qsq
ON qsqv.parent_query_id = qsq.query_id
JOIN sys.query_store_query_text AS qsqtxt
ON qsq.query_text_id = qsqtxt .query_text_id
ORDER BY qspl.query_id, qsrs.last_execution_time;
GO
ディスパッチャーとバリアントの情報クエリ ストア表示する
SELECT
qspl.plan_type_desc AS query_plan_type,
qspl.plan_id as query_store_planid,
qspl.query_id as query_store_queryid,
qsqv.query_variant_query_id as query_store_variant_queryid,
qsqv.parent_query_id as query_store_parent_queryid,
qsqv.dispatcher_plan_id as query_store_dispatcher_planid,
qsq.query_hash,
qsqtxt.query_sql_text,
CONVERT(xml,qspl.query_plan)as show_plan_xml,
qsq.count_compiles AS number_of_compiles,
qsrs.last_execution_time as last_execution_time,
qsrs.count_executions AS number_of_executions
FROM sys.query_store_query qsq
LEFT JOIN sys.query_store_query_text qsqtxt
ON qsq.query_text_id = qsqtxt.query_text_id
LEFT JOIN sys.query_store_plan qspl
ON qsq.query_id = qspl.query_id
LEFT JOIN sys.query_store_query_variant qsqv
ON qsq.query_id = qsqv.query_variant_query_id
LEFT JOIN sys.query_store_runtime_stats qsrs
ON qspl.plan_id = qsrs.plan_id
LEFT JOIN sys.query_store_runtime_stats_interval qsrsi
ON qsrs.runtime_stats_interval_id = qsrsi.runtime_stats_interval_id
WHERE qspl.plan_type = 1 or qspl.plan_type = 2
ORDER BY qspl.query_id, qsrs.last_execution_time;
GO