Beruflich Dokumente
Kultur Dokumente
almacén de consultas
20/08/2019
Tiempo de lectura: 20 minutos
o
o
Para obtener una descripción rápida sobre cómo usar el almacén de consultas en
escenarios de solución de problemas, vea los blogs de Azure del Almacén de consultas.
Uso de Información de rendimiento de consultas en
Azure SQL Database
Si ejecuta el almacén de consultas en Azure SQL Database, puede usar Información de
rendimiento de consultas para analizar el consumo de DTU en el tiempo. Aunque se
puede usar Management Studio para obtener el consumo de recursos detallado para
todas las consultas (CPU, memoria y E/S) Información de rendimiento de consultas
ofrece una forma rápida y eficaz de determinar su impacto en el consumo global de
DTU de la base de datos. Para obtener más información, vea Información de
rendimiento de consultas de Base de datos SQL de Azure.
Tamaño máximo (MB) : especifica el límite del espacio de datos que el almacén de
consultas toma dentro de la base de datos. Es el valor de configuración más importante
que afecta directamente al modo de operación del almacén de consultas.
El valor predeterminado en SQL Server 2016 (13.x) y SQL Server 2017 (14.x) es
100 MB. Es posible que este tamaño no sea suficiente si la carga de trabajo genera gran
cantidad de planes y consultas diferentes, o bien si quiere conservar el historial de
consultas durante un período de tiempo más largo. A partir de SQL Server 2019 (15.x),
el valor predeterminado es de 1 GB. Realice el seguimiento del uso de espacio actual y
aumente el valor de Tamaño máximo (MB) para impedir que el almacén de consultas
cambie al modo de solo lectura.
Importante
Utilice Management Studio o ejecute el siguiente script para obtener la información más
reciente sobre el tamaño del Almacén de consultas:
SQL
USE [QueryStoreDB];
GO
SQL
ALTER DATABASE [QueryStoreDB]
SET QUERY_STORE (MAX_STORAGE_SIZE_MB = 1024);
Nota
El uso de la marca de seguimiento 7745 impide que los datos del almacén de consultas
se escriban en el disco en el caso de un comando de conmutación por error o apagado.
Para más información, vea la sección Uso de marcas de seguimiento en servidores
críticos para mejorar la recuperación ante desastres.
Use SQL Server Management Studio o Transact-SQL para establecer otro valor para
Intervalo de vaciado de datos:
SQL
ALTER DATABASE [QueryStoreDB]
SET QUERY_STORE (DATA_FLUSH_INTERVAL_SECONDS = 900);
SQL
ALTER DATABASE [QueryStoreDB]
SET QUERY_STORE (INTERVAL_LENGTH_MINUTES = 60);
Evite mantener datos históricos que no tenga pensado usar. Este procedimiento reduce
los cambios al estado de solo lectura. El tamaño de los datos del almacén de consultas y
el tiempo para detectar y mitigar la incidencia serán más predecibles. Use Management
Studio o el siguiente script para configurar la directiva de limpieza basada en el tiempo:
SQL
ALTER DATABASE [QueryStoreDB]
SET QUERY_STORE (CLEANUP_POLICY = (STALE_QUERY_THRESHOLD_DAYS = 90));
SQL
ALTER DATABASE [QueryStoreDB]
SET QUERY_STORE (QUERY_CAPTURE_MODE = AUTO);
Ejemplos
SQL
ALTER DATABASE [QueryStoreDB]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
QUERY_CAPTURE_MODE = AUTO,
MAX_STORAGE_SIZE_MB = 1000,
INTERVAL_LENGTH_MINUTES = 60
);
SQL
ALTER DATABASE [QueryStoreDB]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
QUERY_CAPTURE_MODE = AUTO,
MAX_STORAGE_SIZE_MB = 1000,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON,
);
SQL
ALTER DATABASE [QueryStoreDB]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1000,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON,
QUERY_CAPTURE_MODE = CUSTOM,
QUERY_CAPTURE_POLICY = (
STALE_CAPTURE_POLICY_THRESHOLD = 24 HOURS,
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
)
);
SQL
ALTER DATABASE [DatabaseOne] SET QUERY_STORE = ON;
Versión
Función
de SQL Métrica de ejecución
estadística
Server
SQL Tiempo de CPU, Duración, Recuento de ejecuciones, Promedio,
Server Lecturas lógicas, Escrituras lógicas, Consumo de máximo, mínimo,
2016 memoria, Lecturas físicas, Tiempo de CLR, Grado de desviación
(13.x) paralelismo (DOP) y Recuento de filas estándar y total
Tiempo de CPU, Duración, Recuento de ejecuciones,
SQL Promedio,
Lecturas lógicas, Escrituras lógicas, Consumo de
Server máximo, mínimo,
memoria, Lecturas físicas, Tiempo de CLR, Grado de
2017 desviación
paralelismo, Recuento de filas, Memoria de registro,
(14.x) estándar y total
Memoria de TempDB y Tiempos de espera
En la siguiente tabla se explica cuándo usar cada una de las vistas del Almacén de
consultas:
Vista de SQL
Server
Escenario
Management
Studio
Localice consultas para las que las métricas de ejecución se han
devuelto recientemente (es decir, han cambiado a peor).
Consultas
Use esta vista para poner en correlación los problemas de
devueltas
rendimiento observados en la aplicación con las consultas reales
que se deben corregir o mejorar.
Analice el consumo total de recursos para la base de datos para
cualquiera de las métricas de ejecución.
Consumo total de
Use esta vista para identificar patrones de recursos (cargas de
recursos
trabajo por el día frente a cargas de trabajo por la noche) y
optimizar el consumo total para la base de datos.
Elija una métrica de ejecución de interés e identifique las
consultas que tenían los valores más extremos para un intervalo
Consultas que
de tiempo proporcionado.
consumen más
Use esta vista para centrar la atención en las consultas más
recursos
importantes que tienen el mayor impacto en el consumo de
recursos de base de datos.
Enumera los planes forzados anteriormente mediante el Almacén
Consultas con de consultas.
planes forzados Use esta vista para obtener acceso rápidamente a todos los planes
forzados actualmente.
Analice consultas con una gran variación de ejecución en lo
referente a cualquiera de las dimensiones disponibles, como la
duración, el tiempo de CPU, la E/S y el uso de memoria, en el
Consultas con gran
intervalo de tiempo deseado.
variación
Use esta vista para identificar consultas con un rendimiento muy
variable que puedan afectar a la experiencia del usuario en las
aplicaciones.
Analice las categorías de espera más activas de una base de datos
y qué consultas contribuyen más a la categoría de espera
seleccionada.
Use esta vista para analizar las estadísticas de espera e identificar
Estadísticas de
las consultas que puedan afectar a la experiencia del usuario en
espera de consulta
las aplicaciones.
Sugerencia
Para obtener una descripción detallada sobre cómo usar Management Studio para
identificar las consultas que consumen más recursos y corregir aquellas devueltas
debido al cambio de una opción de plan, vea los blogs de Azure sobre el almacén de
consultas.
Nota
Forma Significado
Consulta completada, lo que significa que una ejecución normal ha
Circle
finalizado correctamente.
Forma Significado
Cancelada, lo que significa una ejecución iniciada por el cliente
Square
anulada.
Triangle Con error, lo que significa que una excepción ha anulado la ejecución.
Se podría concluir que a la consulta le falta un índice para que la ejecución sea
óptima. Esta información aparece en el plan de ejecución de la consulta. Cree el
índice que falta y compruebe el rendimiento de la consulta mediante el almacén
de consultas.
SQL
USE [QueryStoreDB];
GO
Tenga en cuenta los pasos siguientes para cambiar el Almacén de consultas al modo de
lectura y escritura y activar la recopilación de datos:
SQL
Puede aplicar uno de estos pasos o los dos si ejecuta la instrucción siguiente que vuelve
a cambiar de forma explícita el modo de operación a lectura y escritura:
SQL
ALTER DATABASE [QueryStoreDB]
SET QUERY_STORE (OPERATION_MODE = READ_WRITE);
Estado ERROR
Si el problema continúa, significa que los datos del almacén de consultas siguen
dañados en el disco.
SQL
ALTER DATABASE [QueryStoreDB]
SET QUERY_STORE CLEAR;
GO
Modo de
captura del
Escenario
almacén de
consultas
Analice la carga de trabajo exhaustivamente en cuanto a todas las
formas de las consultas y sus frecuencias de ejecución, y otras
Todos estadísticas.
Nota
Parametrice las consultas cuando proceda. Por ejemplo, encapsule las consultas
dentro de un procedimiento almacenado o sp_executesql. Para más información,
vea Parámetros y reutilización de un plan de ejecución.
Use la opción Optimizar para cargas de trabajo ad hoc si la carga de trabajo
contiene muchos lotes ad hoc de un solo uso con distintos planes de consulta.
o Compare el número de valores query_hash distintos con el número total
de entradas en sys.query_store_query. Si la relación es cercana a 1, la
carga de trabajo ad hoc genera consultas diferentes.
Aplique la parametrización forzada para la base de datos o para un subconjunto
de consultas si el número de planes de consulta diferentes no es grande.
o Use una guía de plan para forzar la parametrización solo para la consulta
seleccionada.
o Configure la parametrización forzada mediante el comando opción de
base de datos de parametrización si hay un pequeño número de planes de
consulta diferentes en la carga de trabajo. Un ejemplo es cuando la
relación entre el recuento de valores query_hash distintos y el número
total de entradas de sys.query_store_query es mucho menor que 1.
Establezca QUERY_CAPTURE_MODE en AUTO para filtrar de forma
automática las consultas ad hoc con un consumo de recursos reducido.
SQL
USE [QueryStoreDB];
GO
Para obtener una lista completa de los motivos, vea sys.query_store_plan. También
puede usar el XEvent query_store_plan_forcing_failed para realizar un seguimiento
de los errores forzados del plan y solucionarlos.
Evitar el cambio de nombre de las bases de datos para
las consultas con planes forzados
Los planes de ejecución hacen referencia a objetos mediante nombres de tres partes
como database.schema.object.
Si cambia el nombre de una base de datos, al forzar el plan se produce un error que
provoca la recompilación en todas las ejecuciones de consulta posteriores.
Nota
Importante