Eu herdei um Planos 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 impressionantes 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 é pausada).
Minha pergunta é:
Quando devemos atualizar as estatísticas e por quê?
Este parece ser o tipo de coisa que devemos fazer com menos frequência do que todos os dias. Estou tentando nos tirar da mentalidade "só porque" de fazer manutenção desnecessária.
Se você não tiver a janela de manutenção para isso, 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. Em sua postagem original, você disse que os usuários estão vendo uma degradação de desempenho devido a esse 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 esteja desativada para o índice).
A frequência exata com que você deve atualizar as estatísticas depende muito de quanta modificação de dados seus índices e dados estão recebendo . Se houver muito pouca modificação (
INSERT
,UPDATE
,DELETE
) nos dados, você poderá ter um agendamento menos frequente para o trabalho de atualização de estatísticas.Uma maneira de descobrir se suas estatísticas estão desatualizadas é observar os planos de execução e se as linhas estimadas 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 estar em ordem para você. 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 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.
Quando atualizar as estatísticas?
se e somente se o recurso de estatísticas de atualização automática não for bom o suficiente para suas necessidades. Quero dizer, se as estatísticas de criação automática e atualização automática estiverem ativadas e você estiver recebendo um plano de consulta ruim porque as estatísticas não são precisas ou atuais, pode ser uma boa ideia 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.
então sugiro parar o comando Updates Statistics dos seus Planos de Manutenção
a atualização de estatísticas é importante e útil 1. permite que o otimizador de consulta do SQL Server produza bons planos de consulta de forma consistente, mantendo os custos de desenvolvimento e administração baixos 2. As estatísticas são usadas pelo otimizador de consulta 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 quiser actualizar as Estatísticas manualmente deverá primeiro saber Quando as Estatísticas são actualizadas 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 de atualização substancial desde a última vez que as estatísticas foram criadas ou atualizadas, o SQL Server atualiza automaticamente as estatísticas por amostragem dos valores da coluna (usando estatísticas de atualização automática) . A atualização automática das estatísticas é acionada pela otimização da consulta ou pela execução de um plano compilado e envolve apenas um subconjunto das colunas referidas na consulta. As estatísticas são atualizadas antes da compilação da consulta se AUTO_UPDATE_STATISTCS_ASYNC estiver OFF
aqui estão bons artigos que falam sobre quando as estatísticas de atualização são acionadas no servidor SQL
depois de saber quando as estatísticas são acionadas, isso ajudará você a decidir quando atualizar as estatísticas manualmente
para saber mais sobre Estatística e seu efeito no desempenho eu recomendo BrentOzar e Kimberly em sqlskills muito bons blogs e blogueiros.