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 auront la même valeur de query_hash que dans l’affichage catalogue sys.query_store_query, qui, lorsqu’elles sont jointes aux vues catalogue sys.query_store_query_variant et sys.query_store_runtime_stats, les statistiques agrégées d’utilisation des ressources 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étrable.
parent_query_id bigint ID de la requête paramétrable d’origine.
dispatcher_plan_id bigint ID du plan de répartiteur d’optimisation du 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 finissent par s’ajouter 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 pas de statistiques d’exécution dans le Magasin des requêtes, ce qui entraîne la suppression des requêtes Magasin des 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 Magasin des requêtes informations sur les variantes

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 informations sur le répartiteur et les variantes

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