Partager via


sys.query_store_query_variant (Transact-SQL)

S’applique à : SQL Server 2022 (16.x)

Contient des informations sur les relations parent-enfant entre les requêtes paramétrables d’origine (également appelées requêtes parentes), les plans de répartiteur et leurs variantes de requête enfant. Cet affichage catalogue offre la possibilité d’afficher toutes les variantes de requête associées à un répartiteur ainsi que les requêtes paramétrables d’origine. Les variantes de requête ont la même valeur query_hash que celle affichée à partir de l’affichage catalogue sys.query_store_query, qui, lorsqu’elles sont jointes aux vues de catalogue sys.query_store_query_variant et sys.query_store_runtime_stats, les statistiques d’utilisation des ressources agrégées peuvent être obtenues pour les requêtes qui diffèrent uniquement par leurs valeurs d’entrée.

Nom de la colonne Type de données Description
query_variant_query_id bigint Clé primaire ID de la variante de requête sensible paramétrée.
parent_query_id bigint ID de la requête paramétrable d’origine.
dispatcher_plan_id bigint ID du plan d’optimisation de plan sensible aux paramètres.

Notes

Étant donné que plusieurs variantes de requête peuvent être associées à un plan de répartiteur, plusieurs plans appartiennent à des variantes de requête qui seront éventuellement ajoutés aux statistiques globales d’utilisation des ressources de la requête parente. Le plan de répartiteur pour les variantes de requête ne produit aucune statistique d’exécution dans le Magasin des requêtes, ce qui entraîne l’absence de Magasin des requêtes requêtes existantes lors de la collecte de statistiques globales, sauf si une jointure supplémentaire à la vue query_store_query_variant est incluse.

autorisations

Nécessite l’autorisation VIEW DATABASE STATE.

Exemples

Afficher les informations de variante Magasin des requêtes

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

Afficher Magasin des requêtes dispatcher et les informations de variante

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

Voir aussi