Come Archivio query raccoglie i datiHow Query Store Collects Data

In questo argomento si applica a: SìSQL ServerSìDatabase SQL di AzurenonAzure SQL Data Warehouse non Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Archivio query funziona come un' utilità di traccia eventi che raccoglie costantemente informazioni di compilazione e runtime correlate alle query e ai piani.Query Store works as a flight data recorder constantly collecting compile and runtime information related to the queries and plans. I dati relativi alle query sono resi persistenti nelle tabelle interne e presentati agli utenti mediante una serie di viste.Query related data is persisted in the internal tables and presented to users through a set of views.

VisteViews

Il diagramma seguente mostra le viste di Archivio query e le loro relazioni logiche, con le informazioni della fase di compilazione presentate come entità blu:The following diagram shows Query Store views and their logical relationships, with compile time information presented as blue entities:

query-store-process-2viewsquery-store-process-2views

Descrizioni delle visteView Descriptions

VisualizzaView DescrizioneDescription
sys.query_store_query_textsys.query_store_query_text Presenta i testi delle singole query univoche eseguite sul database.Presents unique query texts executed against the database. I commenti e gli spazi prima e dopo il testo della query vengono ignorati.Comments and spaces before and after the query text are ignored. I commenti e gli spazi all'interno del testo non vengono ignorati.Comments and spaces inside text are not ignored. Ogni istruzione del batch genera una voce diversa nell'elenco dei testi di query.Every statement in the batch generates a separate query text entry.
sys.query_context_settingssys.query_context_settings Presenta combinazioni univoche di impostazioni che influiscono sul piano e con cui sono eseguite le query.Presents unique combinations of plan affecting settings under which queries are executed. Lo stesso testo di query eseguito con impostazioni diverse che influiscono sul piano genera voci di query separate in Archivio query in quanto context_settings_id fa parte della chiave della query.The same query text executed with different plan affecting settings produces separate query entry in the Query Store because context_settings_id is part of the query key.
sys.query_store_querysys.query_store_query Voci di query che vengono monitorate e forzate separatamente nell'Archivio query.Query entries that are tracked and forced separately in the Query Store. Un singolo testo di query può generare più voci di query se viene eseguito con impostazioni di contesto diverse o se viene eseguito all'esterno anziché all'interno di moduli Transact-SQLTransact-SQL diversi, ovvero stored procedure, trigger e così via.A single query text can produce multiple query entries if it is executed under different context settings or if it is executed outside vs. inside of different Transact-SQLTransact-SQL modules (stored procedures, triggers, etc.).
sys.query_store_plansys.query_store_plan Presenta il piano stimato per la query con le statistiche della fase di compilazione.Presents estimated plan for the query with the compile time statistics. Il piano archiviato è equivalente al piano che si otterrebbe usando SET SHOWPLAN_XML ON.Stored plan is equivalent to one that you would get by using SET SHOWPLAN_XML ON.
sys.query_store_runtime_stats_intervalsys.query_store_runtime_stats_interval Archivio query divide il tempo in finestre temporali (intervalli) generate automaticamente e archivia le statistiche aggregate per tale intervallo per ogni piano eseguito.Query Store divides time into automatically generated time windows (intervals) and stores aggregated statistics on that interval for every executed plan. La dimensione dell'intervallo è controllata dall'opzione di configurazione Intervallo raccolta statistiche (in Management StudioManagement Studio) o INTERVAL_LENGTH_MINUTES usando Opzioni di ALTER DATABASE SET (Transact-SQL).The size of the interval is controlled by the configuration option Statistics Collection Interval (in Management StudioManagement Studio) or INTERVAL_LENGTH_MINUTES using ALTER DATABASE SET Options (Transact-SQL).
sys.query_store_runtime_statssys.query_store_runtime_stats Statistiche di runtime aggregate per i piani eseguiti.Aggregated runtime statistics for executed plans. Tutte le metriche acquisite sono espresse nella forma di quattro funzioni statistiche: media, minimo, massimo e deviazione standard.All captured metrics are expressed in form of 4 statistic functions: Average, Minimum, Maximum, and Standard Deviation.

Per ulteriori informazioni sulle viste di Archivio query, vedere la sezione Viste, funzioni e procedure correlate di Monitoraggio delle prestazioni tramite Archivio query.For additional details on Query Store views, see the Related Views, Functions, and Procedures section of Monitoring Performance By Using the Query Store.

Elaborazione delle queryQuery Processing

Archivio query interagisce con la pipeline di elaborazione delle query nei seguenti punti chiave:Query store interacts with the query processing pipeline at the following key points:

  1. Quando la query viene compilata per la prima volta, il testo della query e il piano iniziale vengono inviati ad Archivio queryWhen query gets compiled for the first time, query text and initial plan are sent to Query Store

  2. Quando la query viene ricompilata, il piano viene aggiornato in Archivio query.When query gets recompiled, the plan is being updated in the Query Store. Se viene creato un nuovo piano, Archivio query aggiunge la nuova voce di piano per la query, mantenendo le precedenti insieme alle relative statistiche di esecuzione.If a new plan is created, Query Store adds the new plan entry for the query, keeping the previous ones along with their execution statistics.

  3. Al momento dell'esecuzione della query, le statistiche di runtime vengono inviate ad Archivio query.Upon the query execution, runtime statistics are sent to the Query Store. Archivio query mantiene le statistiche aggregate precise per ogni piano che è stato eseguito entro l'intervallo attualmente attivo.Query Store keeps aggregated statistics accurate for every plan that was executed within the currently active interval.

  4. Durante la compilazione e il controllo per le fasi di ricompilazione, SQL ServerSQL Server determina se esiste un piano in Archivio query che deve essere applicato per la query attualmente in esecuzione.During the compile and check for recompile phases, SQL ServerSQL Server determines if there is a plan in the Query Store that should be applied for the currently running query. Se è presente un piano forzato e il piano nella cache delle procedure è diverso dal piano forzato, la query viene ricompilata, esattamente come se fosse stato applicato PLAN HINT alla query.If there is a forced plan and the plan in the procedure cache is different than the forced plan, the query gets recompiled, effectively the same way as if PLAN HINT was applied to that query. Questo processo avviene in modo trasparente per l'applicazione dell'utente.This process happens transparently to the user application.

    Il diagramma seguente illustra i punti di integrazione illustrati in precedenza:The following diagram depicts points of integration explained above:

    query-store-process-2processorquery-store-process-2processor

    Per ridurre al minimo il sovraccarico di I/O, i nuovi dati sono acquisiti in memoria.To minimize I/O overhead, new data is captured in-memory. Le operazioni di scrittura sono messe in coda e scaricate sul disco in un secondo momento.Writes operations are queued and flushed to disk afterwards. Le informazioni relative alle query e ai piani (Archivio piano nel diagramma riportato di seguito) vengono scaricate con latenza minima,Query and plan information (Plan Store on diagram below) are flushed with minimal latency. mentre le statistiche di runtime (Statistiche runtime) sono mantenute in memoria per un periodo di tempo definito con l'opzione DATA_FLUSH_INTERVAL_SECONDS dell'istruzione SET QUERY_STORE .The runtime statistics (Runtime Stats) are kept in memory for a period of time defined with the DATA_FLUSH_INTERVAL_SECONDS option of the SET QUERY_STORE statement. La finestra di dialogo Archivio query di SSMS consente di immettere il valore Intervallo di scaricamento dati (minuti), che viene convertito in secondi.The SSMS Query Store dialog box allows you to enter Data Flush Interval (Minutes), which it converts to seconds.

    query-store-process-3planquery-store-process-3plan

    In caso di arresto anomalo del sistema, Archivio query può perdere i dati di runtime fino alla quantità definita con DATA_FLUSH_INTERVAL_SECONDS.In case of a system crash, Query Store can lose runtime data up to amount defined with DATA_FLUSH_INTERVAL_SECONDS. Il valore predefinito di 900 secondi (15 minuti) rappresenta un punto di equilibrio ottimale tra le prestazioni di acquisizione delle query e la disponibilità dei dati.The default value of 900 seconds (15 minutes) is an optimal balance between query capture performance and data availability.
    In caso di uso intenso della memoria, le statistiche di runtime possono essere scaricate su disco prima di quanto definito con DATA_FLUSH_INTERVAL_SECONDS.In case of memory pressure, runtime statistics can be flushed to disk earlier than defined with DATA_FLUSH_INTERVAL_SECONDS.
    Durante la lettura dei dati di Archivio query, i dati in memoria e su disco sono unificati in modo trasparente.During the read of the Query Store data in-memory and on-disk data are unified transparently. In caso di chiusura della sessione o di riavvio o arresto anomalo dell'applicazione client, le statistiche sulla query non verranno registrate.In case of session termination or client application restart/crash query statistics won’t be recorded.

    query-store-process-4planinfoquery-store-process-4planinfo

Vedere ancheSee Also

Monitoraggio delle prestazioni tramite Archivio query Monitoring Performance By Using the Query Store
Procedure consigliate per l'archivio query Best Practice with the Query Store
Viste del catalogo di Archivio query (Transact-SQL)Query Store Catalog Views (Transact-SQL)