sys.query_store_query_variant (Transact-SQL)

Si applica a: SQL Server 2022 (16.x)

Contiene informazioni sulle relazioni padre-figlio tra le query con parametri originali (note anche come query padre), i piani dispatcher e le relative varianti di query figlio. Questa vista del catalogo offre la possibilità di visualizzare tutte le varianti di query associate a un dispatcher e le query con parametri originali. Le varianti di query avranno lo stesso valore query_hash visualizzato dall'interno della vista del catalogo sys.query_store_query, che quando viene unita alle viste del catalogo sys.query_store_query_variant e sys.query_store_runtime_stats, è possibile ottenere statistiche di utilizzo delle risorse aggregate per le query che differiscono solo per i relativi valori di input.

Nome colonna Tipo di dati Descrizione
query_variant_query_id bigint Chiave primaria. ID della variante di query sensibile con parametri.
parent_query_id bigint ID della query con parametri originale.
dispatcher_plan_id bigint ID del piano dispatcher di ottimizzazione del piano sensibile ai parametri.

Osservazioni:

Poiché più varianti di query possono essere associate a un piano dispatcher, saranno presenti più piani che appartengono a varianti di query che alla fine aggiungeranno alle statistiche di utilizzo complessive delle risorse della query padre. Il piano dispatcher per le varianti di query non produce statistiche di runtime in Query Store, che causerà l'assenza di query esistenti di Query Store quando si raccolgono statistiche complessive, a meno che non sia incluso un join aggiuntivo alla visualizzazione query_store_query_variant .

Autorizzazioni

Richiede l'autorizzazione VIEW DATABASE STATE .

Esempi

Visualizzare le informazioni sulle varianti di Query Store

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

Visualizzare le informazioni sul dispatcher e sulle varianti di Query Store

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

Vedi anche