Compartir vía


Cómo recopila datos el almacén de consultas

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics

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. 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.

Vistas

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):

Vistas de proceso del almacén de consultas
Descripciones de las vistas

Ver Descripción
sys.query_store_query_text Presenta los textos de consultas únicas ejecutadas en la base de datos. Se omiten los comentarios y espacios antes y después del texto de consulta. No se omiten los comentarios y espacios dentro del texto. Cada instrucción del lote genera una entrada de texto de consulta independiente.
sys.query_context_settings Presenta las combinaciones únicas de configuraciones que afectan al plan con las que se ejecutan las consultas. 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.
sys.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. Un único texto de consulta puede generar varias entradas de consulta si se ejecuta en una configuración de contexto diferente o si se ejecuta fuera en comparación con dentro de diferentes módulos transact-SQL, como procedimientos almacenados y desencadenadores.
sys.query_store_plan Presenta el plan estimado para la consulta con las estadísticas de tiempo de compilación. El plan almacenado equivale al que se obtiene mediante SET SHOWPLAN_XML ON.
sys.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. El tamaño del intervalo se controla mediante la opción de configuración Intervalo de recopilación de estadísticas (en Management Studio) o INTERVAL_LENGTH_MINUTES mediante las opciones ALTER DATABASE SET (Transact-SQL).
sys.query_store_runtime_stats Estadísticas agregadas del runtime para los planes ejecutados. Todas las métricas capturadas se expresan en forma de cuatro funciones estadísticas: Average (Media), Minimum (Mínimo), Maximum (Máximo) y Standard Deviation (Desviación estándar).

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.

Procesamiento de consultas

El almacén de consultas interactúa con la canalización de procesamiento de consultas en los siguientes puntos clave:

  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.

  2. Cuando una consulta se vuelve a compilar, el plan se actualiza en el almacén de consultas. 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.

  3. Tras la ejecución de la consulta, se envían estadísticas de tiempo de ejecución al almacén de consultas. El almacén de consultas mantiene precisas estadísticas agregadas para todos los planes que se ejecutan dentro del intervalo activo en ese momento.

  4. Durante la compilación y comprobación de las fases de recompilación, SQL Server determina si hay un plan en el almacén de consultas que se debe aplicar para la consulta que se está ejecutando actualmente. Si hay un plan forzado y el plan de la caché de procedimientos es distinto al forzado, la consulta se vuelve a compilar. Es lo mismo que si se aplicara PLAN HINT a esa consulta. Este proceso se produce de forma transparente para la aplicación de usuario.

En el diagrama siguiente se muestran los puntos de la integración explicados en los pasos anteriores:

Proceso del almacén de consultas

Comentarios

Para minimizar la sobrecarga de E/S, los nuevos datos se capturan en memoria. Las operaciones de escritura se ponen en cola y se vacían posteriormente en el disco. 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. 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. Puede usar el cuadro de diálogo del almacén de consultas de Management Studio para especificar un valor para el intervalo de vaciado de datos (minutos), que se convierte internamente en segundos.

Plan de proceso del almacén de consultas

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. 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.

Importante

El límite Tamaño máximo (MB) no se aplica de forma estricta. El tamaño de almacenamiento solo se comprueba cuando el almacén de consultas escribe datos en el disco. Este intervalo lo establece el valor de Intervalo de vaciado de datos. 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. 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.

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.

Durante la lectura del almacén de consultas, los datos en memoria y en disco se unifican de manera transparente.

Si se termina una sesión o la aplicación cliente se reinicia o bloquea, las estadísticas de consulta no se registrarán.

Información del plan de proceso del almacén de consultas

Consulte también

Supervisión del rendimiento mediante el Almacén de consultas
Procedimiento recomendado con el almacén de consultas
Vistas de catálogo del almacén de datos de consultas (Transact-SQL)