(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa
SQL Server

Query Store: diagnosticar y corregir regresiones de rendimiento en SQL Server

João Barros 10 de January de 2025 2 min de lectura

Query Store, disponible desde SQL Server 2016, es una caja negra del motor de ejecución que registra automáticamente consultas, planes de ejecución y estadísticas de runtime. Es la herramienta más valiosa para diagnosticar regresiones de rendimiento.

Activar Query Store

ALTER DATABASE AdventureWorks SET QUERY_STORE = ON;
ALTER DATABASE AdventureWorks SET QUERY_STORE (
    OPERATION_MODE = READ_WRITE,
    MAX_STORAGE_SIZE_MB = 1024,
    QUERY_CAPTURE_MODE = AUTO,           -- solo consultas relevantes
    SIZE_BASED_CLEANUP_MODE = AUTO,
    DATA_FLUSH_INTERVAL_SECONDS = 900    -- flush cada 15 min
);

Encontrar consultas con regresión de plan

-- Consultas con múltiples planes donde el reciente es más lento
SELECT TOP 10
    qsq.query_id,
    qsqt.query_sql_text,
    qsp.plan_id,
    qsrs.avg_duration / 1000.0 AS avg_ms,
    qsrs.count_executions,
    TRY_CAST(qsp.query_plan AS XML) AS execution_plan
FROM sys.query_store_query         qsq
JOIN sys.query_store_query_text    qsqt ON qsq.query_text_id = qsqt.query_text_id
JOIN sys.query_store_plan          qsp  ON qsq.query_id = qsp.query_id
JOIN sys.query_store_runtime_stats qsrs ON qsp.plan_id  = qsrs.plan_id
ORDER BY qsrs.avg_duration DESC;

Forzar un plan estable

-- Forzar el plan anterior (más rápido) para una consulta específica
EXEC sp_query_store_force_plan
    @query_id = 42,
    @plan_id  = 7;

-- Verificar planes forzados
SELECT query_id, plan_id, is_forced_plan
FROM sys.query_store_plan
WHERE is_forced_plan = 1;

Automatic Plan Correction (SQL Server 2017+)

ALTER DATABASE AdventureWorks
SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON);
-- SQL Server detecta regresiones y fuerza el último buen plan automáticamente

Conclusión

Query Store debe estar activo en todas las bases de datos de producción. Tras una actualización de SQL Server, cambio de estadísticas o de índices, es la primera herramienta a consultar para identificar regresiones antes de que los usuarios las reporten.

Compartir: