Existe um motivo para atualizar as estatísticas manualmente?


19

No SQL Server, as estatísticas são atualizadas automaticamente quando Auto Update Statisticsem True(que é o padrão). Existe um motivo para atualizar as estatísticas manualmente e em que circunstâncias?

Respostas:


21

Claro, se seus dados estão mudando com mais frequência do que a taxa de estatísticas automáticas (ou, por exemplo, você está atualizando <20% das linhas com frequência, como status de atualização ou carimbos de data / hora). Ou se sua mesa for grande e não estiver mudando o suficiente para acionar atualizações automáticas de estatísticas. Ou se você tiver filtrado índices ( já que o limite de estatísticas automáticas ainda se baseia na% de alteração em toda a tabela, não na% de alteração do subconjunto de linhas no índice filtrado ).


+1 para índices filtrados. Eu acho que esse é o principal motivo, ou em conjuntos de dados MUITO grandes. Eu tenho tabelas que insiro 30 milhões de linhas por mês, mas é uma pequena porcentagem para que as estatísticas não sejam atualizadas normalmente, a menos que eu as inicie manualmente.
JNK

+1 Além disso, você faz isso de forma programada para redefinir os contadores, significa menos chances fora da janela de manutenção.
gbn

7

Mais algumas razões (superficiais):

As estatísticas de atualização automática bloquearão a consulta que acionou a atualização até que as novas estatísticas estejam prontas.

... A menos que você também ative as estatísticas de atualização automática de forma assíncrona. A consulta que acionou a atualização não aguardará as novas estatísticas, mas será executada potencialmente com as estatísticas antigas e incorretas.

Também encontrei alguns problemas estranhos de bloqueio quando um banco de dados com algumas tabelas relativamente grandes (linhas de 44 milhões, 8,5 GB) começava a atualizar as estatísticas. No entanto, desativamos o aplicativo antes que eu pudesse rastrear o que estava acontecendo.


1
+1 Esse é um ótimo ponto sobre a opção de bloqueio e async.
Aaron Bertrand

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.