Quando atualizar as estatísticas?

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 registro de transações
  • Reorganiza nossos índices
  • Estatísticas de atualizações
  • Exclui backups antigos e arquivos de plano de manutenção

Dos 23 minutos do Plano de Manutenção, a Atualização das Estatísticas leva impressionantes 13 minutos. Durante este período de 13 minutos, o acesso ao banco de dados é bloqueado (ou pelo menos, a replicação deste banco de dados para os outros está pausado).

Minha pergunta é:

Quando deveríamos estar Atualizando as estatísticas, e por quê?

Isso parece o tipo de coisa que deveríamos fazer com menos frequência do que todos os dias. Estou tentando nos tirar da mentalidade do “só porque” de fazer coisas desnecessárias Manutenção.

Comentários

  • Com que frequência / como as linhas são inseridas / atualizadas / excluídas? Para mim, esse é o fator decisivo.
  • @JNK Inserimos cerca de 70.000 linhas por dia em todo o banco de dados. Atualize ~ 100 linhas por mês.
  • 1 – Isso é mais relevante se sabemos por TABLE quantas linhas, e 2 – como uma porcentagem. 70 mil linhas por dia em uma mesa de 1m é muito diferente do que em uma mesa de 500m
  • Eu recomendaria usar algo como ola.hallengren.com / … esta solução apenas reconstrói / reorganiza e atualiza o que é necessário, desta forma, você pode reduzir o tempo que seu plano de manutenção leva e também economizar muito espaço de log.

Resposta

Se você não tem a janela de manutenção para isso, atualizar as estatísticas diariamente é provavelmente um pouco exagero . 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 este plano de manutenção. Não há outro momento para executar esta manutenção plano? Nenhuma outra janela? Vejo que o seu plano abrange a reorganização do índice, quando você os reconstrói? Quando essa operação acontece, as estatísticas são atualizadas automaticamente (desde que não esteja desativado para o dex).

A freqüê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 pouquíssima modificação (INSERT, UPDATE, DELETE) aos dados, então você poderia ter uma programação menos frequente para o trabalho de atualização de estatísticas.

Uma maneira de descobrir se suas estatísticas estão desatualizadas é examinar os planos de execução e se as linhas estimadas diferem muito das linhas reais retornadas então, essa é uma boa indicação de que o intervalo precisa ser aumentado. No seu caso, você está indo na direção contrária e um pouco de teste pode ser necessário para você. Atualize as estatísticas semanalmente e, se estiver começando a ver os sinais indicadores de estatísticas obsoletas, prossiga a partir daí.

Se você estiver usando Estatísticas de atualização automática para seu banco de dados, consulte esta referência para saber o limite de quando as estatísticas são atualizadas.

Comentários

  • Nós reconstruímos os índices uma vez por semana.
  • @ Onion-Knight Então você também atualizará as estatísticas uma vez por semana quando reconstruir seus índices . Isso pode ser suficiente se você ‘ estiver fazendo uma reconstrução geral do índice no banco de dados.

Resposta

Quando atualizar as estatísticas?

se e somente se estatísticas de atualização automática recurso não é bom o suficiente para seus requisitos. quero dizer, se as estatísticas de criação 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, então pode ser uma boa ideia ter controle sobre a criação e atualização das estatísticas. mas se você estiver satisfeito com o desempenho do servidor sql e os tempos de execução da consulta.

, então sugiro interromper as Estatísticas de atualizações comando de seus Planos de manutenção

atualizar as estatísticas é importante e útil 1. permite que o otimizador de consulta do SQL Server produza bons planos de consulta de forma consistente, enquanto mantém 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 dos resultados intermediários e finais da consulta. 3 -Boas estatísticas permitem que o otimizador avalie com precisão o custo de diferentes planos de consulta e, em seguida, escolha um plano de alta qualidade


Se você deseja atualizar as estatísticas manualmente, deve primeiro saber Quando as estatísticas são atualizadas automaticamente

Se o otimizador de consulta do SQL Server requer estatísticas para uma coluna específica em uma tabela que passou por uma atualização substancial atividade desde a última vez em 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 DESLIGADO

aqui estão alguns artigos interessantes que falam sobre quando as estatísticas de atualização são acionadas no servidor SQL

  1. do simple-talk Seção 13. Quando a atualização automática para estatísticas é disparada?
  2. support.microsoft Seção: Automatizando a determinação de Autostats
  3. msdn.microsoft seção: Mantendo estatísticas no SQL Server 2008

depois de saber quando as estatísticas são acionadas, ele o ajudará a decidir quando atualizar as estatísticas manualmente

para saber mais sobre as estatísticas & seu efeito no desempenho, eu recomendo BrentOzar e Kimberly em sqlskills blogs muito bons & blogueiros .

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *