Condividi tramite


sys.query_store_query_variant (Transact-SQL)

Si applica a: SQL Server 2022 (16.x) e versioni successive del databaseSQL di Azure Istanza gestita di SQL di Azurein Microsoft Fabric

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