sys.query_store_query_variant (Transact-SQL)

Aplica-se a: SQL Server 2022 (16.x) e versões posteriores Base de Dados SQL do Azure AzureSQL Managed InstanceSQL database in Microsoft Fabric

Contém informações sobre as relações pai-filho entre as consultas parametrizadas originais (também conhecidas como consultas pai), planos de dispatcher e suas variantes de consulta filho. Esta vista de catálogo mostra todas as variantes de consulta associadas a um despachante e as consultas parametrizadas originais. As variantes de consulta partilham o mesmo query_hash valor que vistas a partir de sys.query_store_query. Quando se junta sys.query_store_query_variant com sys.query_store_query e sys.query_store_runtime_stats, pode obter estatísticas agregadas de utilização de recursos para consultas que diferem apenas pelos seus valores de entrada.

Nome da coluna Tipo de dados Descrição
query_variant_query_id bigint Chave primária. ID da variante de consulta sensível parametrizada.
parent_query_id bigint ID da consulta parametrizada original.
dispatcher_plan_id bigint ID do plano de otimização sensível a parâmetros, plano dispatcher.

Comentários

Como mais do que uma variante de consulta pode ser associada a um único plano de despachante, múltiplos planos pertencem às variantes de consulta e contribuem para as estatísticas globais de utilização de recursos da consulta principal. O plano do despachante para variantes de consulta não produz estatísticas de tempo de execução na Query Store. Como resultado, as consultas existentes na Query Store não são suficientes para recolher estatísticas globais a menos que inclua uma junção extra à sys.query_store_query_variant vista.

Permissões

Requer a permissão de VIEW DATABASE STATE.

Permissões para SQL Server 2022 e posterior

Requer a permissão VIEW DATABASE PERFORMANCE STATE no banco de dados.

Exemplos

Exibir informações de variantes do Repositório de Consultas

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

Exibir informações sobre o dispatcher e a variante do Repositório de Consultas

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