Eu herdei um Plano de Manutenção que faz o seguinte:
- Limpar dados antigos
- Verifica a integridade do banco de dados
- Executa backups de banco de dados e log de transações
- Reorganiza nossos índices
- Estatísticas de atualizações
- Excluir backups antigos e arquivos do plano de manutenção
Do plano de manutenção de 23 minutos, a atualização das estatísticas leva 13 minutos. Durante esse período de 13 minutos, o acesso ao banco de dados é bloqueado (ou pelo menos a replicação desse banco de dados para os outros é interrompida).
Minha pergunta é:
Quando devemos atualizar as estatísticas e por quê?
Parece ser o tipo de coisa que deveríamos fazer com menos frequência do que todos os dias. Estou tentando nos tirar da mentalidade "apenas porque" de fazer manutenção desnecessária.
sql-server
performance
maintenance
statistics
Cavaleiro-Cebola
fonte
fonte
Respostas:
Se você não possui a janela de manutenção, atualizar as estatísticas diariamente provavelmente é um pouco exagerado. Especialmente se você tiver as Estatísticas de Atualização Automática ativadas para o banco de dados. Na sua postagem original, você disse que os usuários estão vendo uma diminuição no desempenho devido a este plano de manutenção. Não há outro momento para executar este plano de manutenção? Nenhuma outra janela? Vejo que seu plano abrange a reorganização de índices. Quando você está reconstruindo índices? Quando essa operação acontece, as estatísticas são atualizadas automaticamente (desde que não estejam desativadas para o índice).
Exatamente com que frequência você deve atualizar as estatísticas depende muito da quantidade de modificação de dados que seus índices e dados estão recebendo . Se houver modificação muito pequena (
INSERT
,UPDATE
,DELETE
) com os dados, então você pode ter um horário mais infrequente para o trabalho atualizar estatísticas.Uma maneira de descobrir se suas estatísticas são obsoletas é examinar os planos de execução e se você estima que as linhas diferem muito das linhas reais retornadas, isso é uma boa indicação de que o intervalo precisa ser aumentado. No seu caso, você está indo para o outro lado e um pouco de julgamento pode ser necessário. Atualize as estatísticas semanalmente e, se você estiver começando a ver os sinais indicadores de estatísticas obsoletas, vá a partir daí.
Se você estiver usando as Estatísticas de Atualização Automática para seu banco de dados, consulte esta referência para o limite de quando as estatísticas são atualizadas.
fonte
Quando atualizar estatísticas?
se e somente se o recurso de estatísticas de atualização automática não for bom o suficiente para seus requisitos. Quer dizer, se as estatísticas de criação automática e atualização automática estão ativadas e você está recebendo um plano de consulta incorreto porque as estatísticas não são precisas ou atuais, pode ser uma boa idéia ter controle sobre a criação e atualização de estatísticas. mas se você estiver bem com o desempenho do servidor sql e os tempos de execução da consulta.
sugiro interromper o comando Estatísticas de Atualizações dos seus Planos de Manutenção
atualizar estatísticas é importante e útil 1. permite que o otimizador de consultas do SQL Server produza bons planos de consulta de forma consistente, mantendo baixos os custos de desenvolvimento e administração 2. As estatísticas são usadas pelo otimizador de consultas para estimar a seletividade das expressões e, portanto, o tamanho do intermediário e resultados finais da consulta. 3. Boas estatísticas permitem que o otimizador avalie com precisão o custo de diferentes planos de consulta e escolha um plano de alta qualidade
Se você deseja atualizar as estatísticas manualmente, você deve saber primeiro Quando as estatísticas são atualizadas automaticamente
Se o otimizador de consulta do SQL Server exigir estatísticas para uma coluna específica em uma tabela que passou por uma atividade substancial de atualização desde a última vez em que as estatísticas foram criadas ou atualizadas, o SQL Server atualiza automaticamente as estatísticas, amostrando os valores da coluna (usando as estatísticas de atualização automática) . A atualização automática de estatísticas é acionada pela otimização de consulta ou pela execução de um plano compilado e envolve apenas um subconjunto das colunas mencionadas na consulta. As estatísticas são atualizadas antes da compilação da consulta se AUTO_UPDATE_STATISTCS_ASYNC estiver desativado
aqui estão bons artigos que falam sobre quando as estatísticas de atualização são acionadas no SQL Server
depois de saber quando as estatísticas são acionadas, ajudará você a decidir quando atualizar as estatísticas manualmente
Para saber mais sobre estatísticas e seu efeito no desempenho, recomendo o BrentOzar e Kimberly em sqlskills muito bons blogs e blogueiros.
fonte