Atualizar Estatísticas realmente diminui o desempenho?

1

Eu tenho sp_updatestats noturnos em um banco de dados de produção, o que parece funcionar bem, exceto por um procedimento armazenado específico que enfrenta problemas de desempenho após a atualização.

A equipe de desenvolvimento está atualmente trabalhando na correção do proc (alguns novos índices e alguma reorganização da consulta que eu recomendei), mas atualmente a única solução é fazer um

UPDATE STATISTICS [SuperGiantTable]
WITH FULLSCAN

Então, a questão é: posso forçar o sp_ updatestats a fazer a opção "with fullscan"? Eu quero para? Se não, então provavelmente adicionarei o comando UPDATE STATISTICS acima para executar imediatamente após o sp_updatestats.

SQL 2000, btw.

    
por BradC 03.06.2009 / 22:53

3 respostas

1

Como o KPWINC disse, "realmente depende".

Existem vários outros itens que influenciam a resposta à sua pergunta de que uma resposta geral pode não ser apropriada.

O Microsoft MSDN tem entradas para sp_updatestats ( link ) e "UPDATE ESTATÍSTICAS "( link )

Para responder às suas últimas perguntas primeiro:

Você precisa reler a entrada SQLServerPedia. Especificamente:

Your index rebuild will automatically update the statistics for the index (with 100% sample size which is usually better then what you end up with when using sp_updatestats). After the index rebuild is complete you can use sp_updatestats to update the other statistics that require attention (2005+).

Olhando a documentação do UPDATE STATISTICS (2000), diz o seguinte para amostragem:

Note The default behavior is to perform a sample scan on the target table or indexed view. SQL Server automatically computes the required sample size.

Kimberly Tripp reuniu algumas entradas de blog sobre estatísticas, índices e planos de manutenção de banco de dados ( link ). Embora as informações possam ou não ser diretamente utilizáveis por você, a orientação de cada entrada de blog deve ser e os sites referenciados provavelmente serão úteis.

    
por 04.06.2009 / 00:42
2

Isso realmente depende ...

Quantos bancos de dados?

Qual é o tamanho do (s) banco (s) de dados?

Quanta atividade?

sp_updatestats (por padrão) atualiza as estatísticas com uma taxa de amostragem padrão. Você pode tentar usar a opção "resample", mas isso só funcionará se uma atualização automática não tiver ocorrido desde a última vez que você atualizou as estatísticas (a atualização automática também usa uma taxa de amostragem padrão).

Quando você reconstrói um índice, as estatísticas são atualizadas com uma varredura completa e a maioria das pessoas vê um bom desempenho após uma reconstrução do índice.

Apenas situações raras as pessoas desativam os recursos de estatísticas automáticas. Eu recomendaria deixá-lo ligado.

Tenha um trabalho que seja executado em um intervalo apropriado (que depende dos padrões de modificação de dados para cada tabela) e faça uma atualização de estatísticas manual usando a varredura completa ou outra taxa de amostragem alta.

Geralmente eu faria o seguinte:

Se é um grande banco de dados   - Backup do log de transações por hora.

- Backup diferencial diário.   - desfragmentação diária.   - Estatísticas de atualização diárias.

- Reindexe uma vez por semana.   - Backup completo uma vez por semana.

Depende muito do banco de dados e das transações.

    
por 03.06.2009 / 23:35
1

Só mais uma coisa é ter em mente que a taxa de amostragem calculada automaticamente pode fazer com que o histograma gerado e o vetor de densidade não considerem adequadamente qualquer distorção de dados que você possa ter, com a qual o sproc opera.

Você sabe a diferença nos planos de consulta entre o sproc depois de uma atualização de estatísticas de amostra e uma atualização de estatísticas do fullscan?

Uma outra coisa - tenha cuidado com os planos de manutenção que reconstroem os índices e atualizem as mesmas estatísticas que foram atualizadas como um efeito colateral da reconstrução - você pode acabar com as estatísticas WORSE se você Acabei de deixar a reconstrução atualizado-stats sozinho.

Obrigado

    
por 04.06.2009 / 05:33