Motivos para desativar a atualização automática de estatísticas?

13

Acabei de saber que uma empresa cliente em que trabalho decidiu manter as opções de estatísticas de atualização automática desativadas para alguns de seus servidores SQL e os DBAs manualmente solucionando problemas de desempenho quando eles surgirem.

No entanto, esse tipo de não faz sentido para mim. Por que você deseja impedir que as estatísticas sejam atualizadas?

Alfa
fonte

Respostas:

11

Meu conselho:

  • Deixe as 'estatísticas de atualização automática' ativadas (até que você tenha um bom motivo para não fazê-lo) - você não deseja que uma grande exclusão no meio do dia afaste os planos de consulta até a próxima vez em que executar a manutenção.
  • No entanto, agende a manutenção do índice / atualize as estatísticas em um momento silencioso. sp_updatestatsatualizará todas as estatísticas de todas as tabelas em um banco de dados para você, mas isso também causará recompilações de proc armazenadas; portanto, escolha seu tempo com cuidado (ou seja, sp_updatestatslogo antes de seus relatórios de final de mês provavelmente ficarem abaixo do ideal).

A frequência com que você precisa executar estatísticas de manutenção / reconstrução do índice depende da carga do seu banco de dados, especificamente com que frequência seus dados são modificados (por exemplo, INSERT/ UPDATE/ DELETE). Se você estiver modificando dados em todo o programa (por exemplo, uma tabela de preparação para um processo semanal em lote), provavelmente desejará atualizar as estatísticas / reorganizar os índices todas as noites. Se os seus dados forem um pouco mais estáticos, você provavelmente poderá defini-lo como uma programação semanal ou quinzenal.

Simon Righarts
fonte
7

Eu só vi isso uma vez com um aplicativo ruim que apresentava heaps mal indexados e ETL pesado.
Isso era lixo e, felizmente, não era meu.

Caso contrário, não há razão.

Se você estiver recebendo atualizações de estatísticas em horários inadequados, isso significa que você está fazendo uma manutenção incorreta de índices / estatísticas ou possui exclusões / cargas em massa que atingem o limite.

Com o SQL Server 2005+, você pode adiar a atualização das estatísticas de qualquer maneira.
Consulte "Quando usar atualizações de estatísticas síncronas ou assíncronas"

Seria interessante ver qual artigo eles seguiram ou leram para fazer essa escolha ...

gbn
fonte
Talvez seja um problema legado? A manutenção das estatísticas foi diferente em 2k?
JNK
@JNK: IIRC: algumas alterações no limite de alteração de linha, mas eu teria que procurar ... ah sim, agora rastreado por coluna, não por tabela msdn.microsoft.com/en-us/library/ms190283.aspx
gbn
São 20% em 2008?
JNK
20% + 500 para> 500 por coluna desde o SQL Server 2005+
gbn 2/11/11
7

A única vez em que desliguei as estatísticas automáticas foi quando usei alguns comandos não documentados para criar algumas estatísticas falsas que não queria que o sistema acabasse com o carregamento dos dados. Este foi um caso muito avançado.

mrdenny
fonte
5

Nos tempos antigos (SQL Server 2000), a configuração de estatísticas de atualização automática ativada poderia resultar em grandes "pausas" nos aplicativos OLTP quando o SQL decidisse fazer uma atualização de estatísticas.

A partir do SQL Server 2005, existe uma opção assíncrona que não resultará em "pausa" quando as estatísticas estiverem desatualizadas e subsequentemente recompiladas. As estatísticas serão recompiladas de forma assíncrona para a próxima vez que forem necessárias.

Lembre-se, porém, de que há um equilíbrio - para conjuntos de dados grandes, convém que a consulta atual leve em consideração as estatísticas mais atualizadas, pois a consulta pode demorar exponencialmente mais tempo com um plano de consulta ineficiente.

Você também pode monitorar o número de recompilações por segundo e outras métricas cruciais de desempenho usando os contadores perfmon publicados pelo SQL Server, como eles dizem, a prova está no pudim.

ifx
fonte
4

Quão ativos são os sistemas?

Se eles são na maioria sistemas de leitura, você pode se dar bem sem atualizar, se eles o fizerem manualmente quando estiverem alterando dados (inserir, atualizar, excluir).

No entanto, para as melhores práticas, é recomendável manter a causa, pois acho que seria raro um problema de desempenho. Eu provavelmente enviaria artigos e postagens para o blog, sugerindo que fossem deixados. Kimberly Tripp tem alguns bons.


fonte
4

Embora eu nunca contradiga nem desmonte intencionalmente o MrDenny de forma alguma (muito respeito pelo seu conhecimento e contribuições para a comunidade), notei a documentação da MS recomendando desativar as estatísticas de atualização automática.

No planejamento da capacidade de armazenamento e SQL Server e configuração (SharePoint Server 2010), a Microsoft recomenda desativá-la.

Também li a mesma recomendação da MS para versões anteriores do SP, mas não consigo encontrar os links agora.

Mas eu NÃO sou um DBA especialista em SP, portanto, você também pode verificar o que Chun Liu, engenheiro de campo da MS Permier, tem a dizer sobre isso em Chun Liu no SharePoint ou simplesmente ignorar esta postagem e deixá-la ligada.

Bruce
fonte
5
Seu conselho é específico para os bancos de dados do SharePoint, geralmente não é aplicável a todas as instalações do SQL Server.
Simon Righarts
0

Normalmente, você as desativa apenas se tiver um método de atualizá-las. Faço isso o tempo todo, pois precisamos de amostras melhores ou apenas diferentes das que as estatísticas automáticas farão. Isso é bastante comum, mas você simplesmente não o desligaria e não faria mais nada.

Andrew J. Kelly
fonte