Delen via


sys.query_store_query_variant (Transact-SQL)

van toepassing op: SQL Server 2022 (16.x)

Bevat informatie over de bovenliggende en onderliggende relaties tussen de oorspronkelijke geparameteriseerde query's (ook wel bovenliggende query's genoemd), dispatcherplannen en de onderliggende queryvarianten. Deze catalogusweergave biedt de mogelijkheid om alle queryvarianten weer te geven die zijn gekoppeld aan een dispatcher, evenals de oorspronkelijke geparameteriseerde query's. Queryvarianten hebben dezelfde query_hash waarde als die wordt weergegeven vanuit de sys.query_store_query catalogusweergave, die wanneer ze zijn gekoppeld aan de sys.query_store_query_variant- en sys.query_store_runtime_stats catalogusweergaven, statistische statistieken over resourcegebruik kunnen worden verkregen voor query's die alleen verschillen met hun invoerwaarden.

Kolomnaam Gegevenstype Beschrijving
query_variant_query_id grote Primaire sleutel. Id van de geparameteriseerde gevoelige queryvariant.
parent_query_id grote Id van de oorspronkelijke geparameteriseerde query.
dispatcher_plan_id grote Id van het parametergevoelige planoptimalisatie-dispatcherplan.

Opmerkingen

Omdat er meer dan één queryvariant kan worden gekoppeld aan één dispatcher-plan, zijn er meerdere abonnementen die deel uitmaken van queryvarianten die uiteindelijk worden toegevoegd aan de algemene resourcegebruiksstatistieken van de bovenliggende query. Het dispatcherplan voor queryvarianten produceert geen runtimestatistieken in de Query Store, waardoor bestaande Query Store-query's niet langer voldoende zijn bij het verzamelen van algemene statistieken, tenzij er een extra join aan de query_store_query_variant weergave is opgenomen.

Machtigingen

Hiervoor is de machtiging VIEW DATABASE STATE vereist.

Voorbeelden

Query Store-variantinformatie weergeven

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

Query Store-dispatcher- en variantinformatie weergeven

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

Zie ook