Cómo recopila datos el almacén de consultasHow Query Store collects data

SE APLICA A: síSQL Server síAzure SQL Database síAzure Synapse Analytics (SQL DW) noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

El almacén de consultas de SQL Server funciona como una caja negra de datos y recopila en todo momento información de compilación y tiempo de ejecución relacionada con las consultas y los planes.SQL Server Query Store works much like a flight data recorder, constantly collecting compile and runtime information related to queries and plans. Los datos relacionados con las consultas se guardan en las tablas internas y se presentan a los usuarios a través de un conjunto de vistas.Query-related data is persisted in the internal tables and presented to users through a set of views.

VistasViews

En el diagrama siguiente se muestran las vistas del almacén de consultas y sus relaciones lógicas (la información de tiempo de compilación se presenta como entidades de color azul):The following diagram shows Query Store views and their logical relationships, with compile time information presented as blue entities:

Vistas de proceso del almacén de consultasQuery Store process views
Descripciones de las vistasView descriptions

VerView DescripciónDescription
sys.query_store_query_textsys.query_store_query_text Presenta los textos de consultas únicas ejecutadas en la base de datos.Presents unique query texts executed against the database. Se omiten los comentarios y espacios antes y después del texto de consulta.Comments and spaces before and after the query text are ignored. No se omiten los comentarios y espacios dentro del texto.Comments and spaces inside text aren't ignored. Cada instrucción del lote genera una entrada de texto de consulta independiente.Every statement in the batch generates a separate query text entry.
sys.query_context_settingssys.query_context_settings Presenta las combinaciones únicas de configuraciones que afectan al plan con las que se ejecutan las consultas.Presents unique combinations of plan-affecting settings under which queries are executed. El mismo texto de consulta ejecutado con otras configuraciones que afecten al plan genera una entrada de consulta distinta en el almacén de consultas porque context_settings_id forma parte de la clave de consulta.The same query text executed with different plan-affecting settings produces a separate query entry in Query Store because context_settings_id is part of the query key.
sys.query_store_querysys.query_store_query Entradas de consulta de las que se realiza el seguimiento y que se aplican por separado en el almacén de consultas.Query entries that are tracked and forced separately in Query Store. Un mismo texto de consulta puede generar varias entradas de consulta si se ejecuta con otras opciones de contexto, o bien si se ejecuta fuera, en lugar de dentro de otros módulos de Transact-SQLTransact-SQL, como procedimientos almacenados y desencadenadores.A single query text can produce multiple query entries if it's executed under different context settings or if it's executed outside versus inside different Transact-SQLTransact-SQL modules, such as stored procedures and triggers.
sys.query_store_plansys.query_store_plan Presenta el plan estimado para la consulta con las estadísticas de tiempo de compilación.Presents estimated plan for the query with the compile time statistics. El plan almacenado equivale al que se obtiene mediante SET SHOWPLAN_XML ON.Stored plan is equivalent to one that you get by using SET SHOWPLAN_XML ON.
sys.query_store_runtime_stats_intervalsys.query_store_runtime_stats_interval El almacén de consultas divide el tiempo en periodos (intervalos) generados de forma automática y almacena estadísticas agregadas en ese intervalo para cada plan ejecutado.Query Store divides time into automatically generated time windows (intervals) and stores aggregated statistics on that interval for every executed plan. El tamaño del intervalo se controla mediante la opción de configuración Intervalo de recopilación de estadísticas (en Management StudioManagement Studio) o INTERVAL_LENGTH_MINUTES con Opciones de 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 Estadísticas agregadas del runtime para los planes ejecutados.Aggregated runtime statistics for executed plans. Todas las métricas capturadas se expresan en forma de cuatro funciones estadísticas: Average, Minimum, Maximum y Standard Deviation.All captured metrics are expressed in the form of four statistic functions: Average, Minimum, Maximum, and Standard Deviation.

Para más información sobre las vistas del almacén de consultas, vea la sección "Vistas, funciones y procedimientos relacionados" de Supervisión del rendimiento mediante el almacén de consultas.For more information on Query Store views, see the "Related Views, Functions, and Procedures" section of Monitoring performance by using the Query Store.

Procesamiento de consultasQuery processing

El almacén de consultas interactúa con la canalización de procesamiento de consultas en los siguientes puntos clave:Query Store interacts with the query processing pipeline at the following key points:

  1. Cuando una consulta se compila por primera vez, el texto de la consulta y el plan inicial se envían al almacén de consultas.When a query gets compiled for the first time, query text and the initial plan are sent to Query Store.

  2. Cuando una consulta se vuelve a compilar, el plan se actualiza en el almacén de consultas.When a query gets recompiled, the plan is updated in Query Store. Si se crea un plan, el almacén de consultas agrega la nueva entrada de plan para la consulta y conserva los anteriores junto con sus estadísticas de ejecución.If a new plan is created, Query Store adds the new plan entry for the query and keeps the previous ones along with their execution statistics.

  3. Tras la ejecución de la consulta, se envían estadísticas de tiempo de ejecución al almacén de consultas.Upon the query execution, runtime statistics are sent to Query Store. El almacén de consultas mantiene precisas estadísticas agregadas para todos los planes que se ejecutan dentro del intervalo activo en ese momento.Query Store keeps aggregated statistics accurate for every plan that was executed within the currently active interval.

  4. Durante las fases de compilación y de comprobación para detectar una nueva compilación, SQL ServerSQL Server determina si hay algún plan en el almacén de consultas que se deba aplicar para la consulta actualmente en ejecución.During the compile and check for recompile phases, SQL ServerSQL Server determines if there's a plan in Query Store that should be applied for the currently running query. Si hay un plan forzado y el plan de la caché de procedimientos es distinto al forzado, la consulta se vuelve a compilar.If there's a forced plan and the plan in the procedure cache is different than the forced plan, the query gets recompiled. Es lo mismo que si se aplicara PLAN HINT a esa consulta.This is effectively the same way as if PLAN HINT was applied to that query. Este proceso se produce de forma transparente para la aplicación de usuario.This process happens transparently to the user application.

En el diagrama siguiente se muestran los puntos de la integración explicados en los pasos anteriores:The following diagram depicts the points of integration explained in the previous steps:

Proceso del almacén de consultasQuery Store process

NotasRemarks

Para minimizar la sobrecarga de E/S, los nuevos datos se capturan en memoria.To minimize I/O overhead, new data is captured in-memory. Las operaciones de escritura se ponen en cola y se vacían posteriormente en el disco.Write operations are queued and flushed to disk afterwards. La información de consulta y del plan (que se muestra como Planear el almacén en el diagrama siguiente) se vacían con una latencia mínima.Query and plan information, shown as Plan Store in the following diagram, are flushed with minimal latency. Las estadísticas en tiempo de ejecución (mostradas como Estadísticas en tiempo de ejecución) se mantienen en memoria durante un período de tiempo definido con la opción DATA_FLUSH_INTERVAL_SECONDS de la instrucción SET QUERY_STORE.The runtime statistics, shown as 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. Puede usar el cuadro de diálogo Almacén de consultas de Management StudioManagement Studio para especificar un valor para Intervalo del vaciado de datos (minutos) , que de forma interna se convierte a segundos.You can use the Management StudioManagement Studio Query Store dialog box to enter a value for Data Flush Interval (Minutes), which is internally converted to seconds.

Plan de proceso del almacén de consultasQuery Store process plan

Si el sistema se bloquea o se produce un cierre mientras se usa la marca de seguimiento 7745, el almacén de consultas puede perder los datos en tiempo de ejecución que se han recopilado, pero todavía no se han conservado, hasta un período de tiempo definido con DATA_FLUSH_INTERVAL_SECONDS.If the system crashes or a shutdown occurs while using trace flag 7745, Query Store can lose runtime data that has been collected but not yet persisted, up to a time window defined with DATA_FLUSH_INTERVAL_SECONDS. Se recomienda el valor predeterminado de 900 segundos (15 minutos) como un equilibrio entre el rendimiento de la captura de consultas y la disponibilidad de los datos.We recommend the default value of 900 seconds (15 minutes) as a balance between query capture performance and data availability.

Importante

El límite Tamaño máximo (MB) no se aplica de forma estricta.The Max Size (MB) limit isn't strictly enforced. El tamaño de almacenamiento solo se comprueba cuando el almacén de consultas escribe datos en el disco.Storage size is checked only when Query Store writes data to disk. Este intervalo lo establece el valor de Intervalo de vaciado de datos.This interval is set by the Data Flush Interval value. Si Almacén de consultas ha infringido el límite de tamaño máximo entre las comprobaciones de tamaño de almacenamiento, pasa al modo de solo lectura.If Query Store has breached the maximum size limit between storage size checks, it transitions to read-only mode. Si Modo de limpieza basada en tamaño está habilitado, también se desencadena el mecanismo de limpieza para aplicar el límite de tamaño máximo.If Size Based Cleanup Mode is enabled, the cleanup mechanism to enforce the maximum size limit is also triggered.

Nota

Si el sistema está bajo presión de memoria, es posible vaciar las estadísticas del runtime en el disco antes de lo definido con DATA_FLUSH_INTERVAL_SECONDS.If the system is under memory pressure, runtime statistics can be flushed to disk earlier than defined with DATA_FLUSH_INTERVAL_SECONDS.

Durante la lectura del almacén de consultas, los datos en memoria y en disco se unifican de manera transparente.During the read of the Query Store data, in-memory and on-disk data are unified transparently.

Si se termina una sesión o la aplicación cliente se reinicia o bloquea, las estadísticas de consulta no se registrarán.If a session is terminated or the client application restarts or crashes, query statistics won't be recorded.

Información del plan de proceso del almacén de consultasQuery Store process plan information

Vea tambiénSee also

Supervisión del rendimiento mediante el almacén de consultasMonitoring performance by using the Query Store
Procedimiento recomendado con el almacén de consultasBest practice with Query Store
Query Store Catalog Views (Vistas de catálogo del almacén de consultas) (Transact-SQL)Query Store Catalog Views (Transact-SQL)