sys.query_store_query_variant (Transact-SQL)

S’applique à : SQL Server 2022 (16.x) et versions ultérieures d’Azure SQL Database Azure SQLManaged InstanceSQL Database dans Microsoft Fabric

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. Cette vue catalogue affiche toutes les variantes de requête associées à un répartiteur ainsi que les requêtes paramétrées d’origine. Les variantes de requête partagent la même query_hash valeur que celles vues depuis sys.query_store_query. Lorsque vous vous associez sys.query_store_query_variant avec sys.query_store_query et sys.query_store_runtime_stats, vous pouvez obtenir des statistiques agrégées d’utilisation des ressources pour des requêtes qui ne diffèrent que 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

Comme plusieurs variantes de requête peuvent être associées à un même plan de répartiteur, plusieurs plans appartiennent aux variantes de requête et contribuent aux statistiques globales d’utilisation des ressources de la requête parente. Le plan de dispatcher pour les variantes de requête ne produit pas de statistiques d'exécution dans le Magasin des requêtes. En conséquence, les requêtes existantes du Magasin des requêtes ne suffisent pas à collecter des statistiques globales à moins d'inclure une jonction supplémentaire à la sys.query_store_query_variant vue.

autorisations

Nécessite l’autorisation VIEW DATABASE STATE.

Autorisations pour SQL Server 2022 et versions ultérieures

Nécessite l’autorisation VIEW DATABASE PERFORMANCE STATE sur la base de données.

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