sys.query_store_query_variant(Transact-SQL)
적용 대상: SQL Server 2022(16.x)
원래 매개 변수가 있는 쿼리(부모 쿼리라고도 함), 디스패처 계획 및 자식 쿼리 변형 간의 부모-자식 관계에 대한 정보를 포함합니다. 이 카탈로그 뷰는 디스패처와 연결된 모든 쿼리 변형과 원래 매개 변수가 있는 쿼리를 볼 수 있는 기능을 제공합니다. 쿼리 변형은 sys.query_store_query 카탈로그 뷰 내에서 볼 수 있는 것과 동일한 query_hash 값을 가지며, sys.query_store_query_variant 및 sys.query_store_runtime_stats 카탈로그 뷰와 조인하면 입력 값만 다른 쿼리에 대해 집계 리소스 사용 통계를 얻을 수 있습니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
query_variant_query_id | bigint | 기본 키. 매개 변수가 있는 중요한 쿼리 변형의 ID입니다. |
parent_query_id | bigint | 원래 매개 변수가 있는 쿼리의 ID입니다. |
dispatcher_plan_id | bigint | 매개 변수에 중요한 계획 최적화 디스패처 계획의 ID입니다. |
설명
둘 이상의 쿼리 변형을 하나의 디스패처 계획과 연결할 수 있으므로 쿼리 변형에 속하는 여러 계획이 있으므로 결국 부모 쿼리의 전체 리소스 사용 통계에 추가됩니다. 쿼리 변형에 대한 디스패처 계획은 쿼리 저장소 런타임 통계를 생성하지 않으므로 query_store_query_variant 보기에 대한 추가 조인이 포함되지 않는 한 전체 통계를 수집할 때 기존 쿼리 저장소 쿼리가 더 이상 충분하지 않습니다.
사용 권한
VIEW DATABASE 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