Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

  • Mesmo comportamento do Trial 1. Tempo de 48 segundos.


Image Added

Comprovamos então que, quanto maior a quantidade de dados, maior será o impacto quando não temos as estatísticas habilitadas.

Com mais de 20 milhões de registros, quando estamos sem estatística saímos de 1,4 seg para 48 seg.

E quando utilizamos a estatística, saiu de 0,2 ms para 1,4 segundos que ainda pode ser melhorado com Rebuild de Index, mas esse tema fica para outro estudo.

Realizei os mesmos procedimentos de teste acima, agora iniciando com 25 milhões de linhas e a partir do Trial 8 - Auto Update Statistics, nos testes  tivemos os seguintes resultados:

Trial 1: Banco de dados com Auto Create Statistics False. 

  • O Query Optimizer não encontra estatística e indica a criação da estatística e de um índice. Tempo de 35 segundos.

Trial 2:  Banco de dados com Auto Create Statistics True

  • O Query Optimizer não  encontra estatística e cria uma nova estatística. Tempo de 1,8 segundos.

Trial 3:  Banco de dados com Auto Create Statistics True

  • O Query Optimizer agora encontra estatística e utiliza a mesma. Tempo de 1,3 segundos.

Trial 4:  Banco de dados com Auto Create Statistics False novamente. 

  • Mesmo comportamento do Trial 1. Tempo de 35 segundos.

Trial 5:  Banco de dados com Auto Create Statistics True

  • Mesmo comportamento do Trial 1. Tempo de 1,7 segundos.

Trial 6:  Banco de dados com Auto Create Statistics True

  • O Query Optimizer agora encontra estatística e utiliza a mesma. Tempo de 1,3 segundos.

Trial 7:  Banco de dados com Auto Create Statistics True. Inclusão de 10 milhões de linhas.

  • O Query Optimizer encontra estatística porém está desatualizada. Tempo de 1,9 segundos.

Trial 8:  Banco de dados com Auto Create Statistics True e Auto Update Statistics True.

  • O Query Optimizer encontra estatística porém está desatualizada, mesmo com auto update habilitado o SQL ainda não atualizou porque não foi inserido nenhum dado ainda na tabela. Tempo de 1,9 segundos.

Trial 9:  Banco de dados com Auto Create Statistics True e Auto Update Statistics True. Inclusão de 10 linhas.  

  • O SQL Server atualiza a estatística. Tempo de 1,8 segundos.

Image Added

Nestes últimos testes, incluímos o Auto update statistics a partir do Trial 8, e na próxima vez que houver uma alteração, o SQL irá verificar que a estatística está desatualizada e atualizar a mesma. Sendo assim, incluímos apenas 10 registros e a estatística foi atualizada automaticamente conforme esperado. 

O SQL Server tem um cálculo específico sobre a quantidade de registros para realizar a atualização da estatística.

É possível habilitar o sinalizador de rastreamento 2371, que altera o limite fixo de estatísticas de atualização para o limite de estatísticas de atualização linear, ou seja, para que o SQL Server utilize um limite de atualização de estatísticas dinâmico e decrescente, principalmente em versões anteriores ao que foi utilizado no teste. Esta opção deve ser analisada com acompanhamento de um DBA para verificar a melhor configuração para seu cenário.

Informações
titleArtigos sugeridos

Caso você queira se aprofundar nos conceitos de estatística, leia os seguintes artigos:

Microsoft: Estatísticas

Microsoft: Cardinality Estimation

SQL Performance: UPDATEs to Statistics