Share via


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

참고 항목