Estou usando o SQL SERVER 2012
meu Auto Update Stats
ON no meu banco de dados.
No link abaixo, eu aprendi que, as estatísticas da Atualização Automática serão acionadas para cada SQRT(1000 * Table rows)
alteração nas linhas da tabela.
https://blogs.msdn.microsoft.com/srgolla/2012/09/04/sql-server-statistics-explained/
Criei uma tabela com 1000 registros
SELECT TOP 500 Row_number()OVER (ORDER BY (SELECT NULL)) rn,
name
INTO stst
FROM sys.objects
Criando estatísticas
CREATE STATISTICS rn
ON stst (rn)
CREATE STATISTICS name
ON stst (name)
Verificando as estatísticas criadas
DBCC show_statistics('stst', rn) -- Rows 500
DBCC show_statistics('stst', name) -- Rows 500
Conforme a fórmula
select SQRT(1000 * 500) -- 707.106781186548
Portanto, se eu adicionar / modificar 707.106781186548
registros na minha tabela, as estatísticas de atualização automática devem ser acionadas
Adicione 1000
mais registros à minha tabela que devem ser mais 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 o auto update stats
Select * from stst
Verificando as estatísticas
DBCC show_statistics('stst', rn) -- Rows 500
DBCC show_statistics('stst', name) -- Rows 500
Infelizmente ainda Rows
é o 500
único.
Mesmo depois de inserir 1000
registros na minha tabela, que é obviamente maior do que 707.106781186548
durante a execução, SELECT
por que as estatísticas da Atualização Automática não foram acionadas? O que estou perdendo aqui
fonte
Respostas:
O novo cálculo será usado apenas se o sinalizador de rastreamento 2371 estiver ativado, exceto no SQL Server 2016 quando o nível de compatibilidade do banco de dados de contexto estiver definido como 130, onde é o comportamento padrão. Consulte Microsoft KB 2754171:
Controlando o comportamento do Autostat (AUTO_UPDATE_STATISTICS) no SQL Server
As estatísticas não são atualizadas quando os dados são modificados. Uma atualização de estatísticas é acionada quando a otimização baseada em custos descobre que estatísticas interessantes para a consulta são obsoletas.
O otimizador não entra na otimização baseada em custos para consultas muito simples ("triviais"), onde um único plano óbvio é sempre ideal. Nenhuma atualização de estatísticas ocorre nesse cenário.
Consulte o Microsoft White Paper Planejar o cache e a recompilação no SQL Server 2012 por Greg Low.
fonte