Estoy usando SQL SERVER 2012
tengo mi Auto Update Stats
ON en mi base de datos.
Desde el siguiente enlace aprendí que, las estadísticas de Actualización automática se activarán por cada SQRT(1000 * Table rows)
cambio en las filas de la tabla.
https://blogs.msdn.microsoft.com/srgolla/2012/09/04/sql-server-statistics-explained/
Creé una tabla con 1000 registros
SELECT TOP 500 Row_number()OVER (ORDER BY (SELECT NULL)) rn,
name
INTO stst
FROM sys.objects
Creando estadísticas
CREATE STATISTICS rn
ON stst (rn)
CREATE STATISTICS name
ON stst (name)
Comprobación de las estadísticas creadas
DBCC show_statistics('stst', rn) -- Rows 500
DBCC show_statistics('stst', name) -- Rows 500
Según la fórmula
select SQRT(1000 * 500) -- 707.106781186548
Entonces, si agrego / modifico 707.106781186548
registros en mi tabla, las estadísticas de actualización automática deberían dispararse
Agregar 1000
más registros a mi tabla que deberían ser más que suficientes para dispararauto update stats
INSERT INTO stst(rn,name)
SELECT TOP 1000 Row_number()OVER (ORDER BY (SELECT NULL)) rn,
a.name
FROM sys.objects a
Para disparar el auto update stats
Select * from stst
Comprobando las estadísticas
DBCC show_statistics('stst', rn) -- Rows 500
DBCC show_statistics('stst', name) -- Rows 500
Lamentablemente todavía Rows
es el 500
único.
Incluso después de insertar 1000
registros en mi tabla, que obviamente es mayor que 707.106781186548
mientras realizaba, SELECT
¿por qué las estadísticas de Actualización automática no se activaron? Que me estoy perdiendo aqui
fuente
Respuestas:
El nuevo cálculo solo se usa si el indicador de traza 2371 está habilitado, excepto en SQL Server 2016 cuando el nivel de compatibilidad de la base de datos contextual se establece en 130, donde es el comportamiento predeterminado. Ver Microsoft KB 2754171:
Control del comportamiento de Autostat (AUTO_UPDATE_STATISTICS) en SQL Server
Las estadísticas no se actualizan cuando se modifican los datos. Se activa una actualización de estadísticas cuando la optimización basada en costos encuentra que las estadísticas interesantes para la consulta están obsoletas.
El optimizador no ingresa la optimización basada en costos para consultas muy simples ("triviales"), donde un único plan obvio es siempre óptimo. No se producen actualizaciones estadísticas en ese escenario.
Consulte el Libro blanco de Microsoft Plan Caché y recompilación en SQL Server 2012 por Greg Low.
fuente