SQL SERVER – Noções básicas sobre estatísticas incrementais
As estatísticas são essenciais para que o otimizador de consultas do SQL Server gere planos de execução eficientes. Estatísticas desatualizadas podem levar a um desempenho insatisfatório da consulta. Tradicionalmente, as estatísticas são atualizadas automaticamente ou reconstruídas manualmente usando verificações completas, o que pode consumir muitos recursos para tabelas grandes. O SQL Server 2014 introduziu um novo recurso chamado estatísticas incrementais para fornecer gerenciamento de estatísticas mais eficiente.
O que são estatísticas incrementais?
Com as estatísticas incrementais habilitadas, o SQL Server rastreia as alterações nos dados e atualiza apenas os subconjuntos de estatísticas impactados em vez de reconstruir as estatísticas completas. Isso significa atualizações menores e mais frequentes focadas nos dados alterados.
Alguns pontos-chave:
- Disponível apenas para SQL Server 2014 e versões mais recentes.
- Habilitado no nível de índice ou estatística usando a opção
STATISTICS_INCREMENTAL = ON
. - Mais adequado para tabelas grandes com alterações frequentes de dados em subconjuntos pequenos.
- Pode reduzir o uso de recursos de manutenção de estatísticas enquanto mantém as estatísticas mais atualizadas.
- A
STATISTICS_NORECOMPUTE
configuração substitui e desativa estatísticas incrementais.
Como funcionam as estatísticas incrementais?
As estatísticas incrementais dividem os dados em partições e mantêm estatísticas em cada partição. À medida que os dados mudam, apenas as partições afetadas são atualizadas. Alguns exemplos de alterações de dados que acionam atualizações incrementais de estatísticas:
- Instruções INSERT, UPDATE, DELETE ou MERGE que modificam dados dentro da tabela
- Operações de inserção em massa usando
BULK INSERT
ouOPENROWSET(BULK...)
O SQL Server determina quais partições foram afetadas usando bitmaps de rastreamento e atualiza apenas as estatísticas dessas partições.
Nos bastidores, as estatísticas incrementais são implementadas como um objeto de estatísticas com várias partes. O cabeçalho contém estatísticas de resumo global para toda a tabela. Cada partição possui seu próprio subconjunto de estatísticas.
Gerenciando estatísticas incrementais
Para ativar estatísticas incrementais em um objeto de índice ou estatísticas:
CREATE STATISTICS stats_name ON table_name(column)
WITH INCREMENTAL = ON;
CREATE INDEX index_name ON table_name(column)
WITH (STATISTICS_INCREMENTAL = ON);
Esse recurso é habilitado por padrão ao criar estatísticas em uma tabela com otimização de memória. Para desativar estatísticas incrementais, defina STATISTICS_INCREMENTAL = OFF
. Isso reconstruirá as estatísticas como estatísticas não incrementais de verificação completa.
UseUPDATE STATISTICS
para reconstruir manualmente estatísticas incrementais sob demanda. Esses incrementos alteraram as partições e deixaram as partições inalteradas, diferentemente da verificação completa.
Verifique as _STATS_DATE
colunas sys.indexes
e sys.stats
veja quando as estatísticas foram atualizadas pela última vez.
Dicas para usar estatísticas
- Teste seu ambiente de homologaçao e seus dados para ver se as estatísticas incrementais melhoram o desempenho em relação às estatísticas de verificação completa.
- Considere ativar tabelas grandes com padrões de partição claros, como intervalos de datas.
- Esteja ciente de que as estatísticas incrementais requerem mais espaço em disco do que as estatísticas típicas.
- Monitore para garantir que as estatísticas incrementais sejam atualizadas conforme esperado.
- Desative remova dos fontes
STATISTICS_NORECOMPUTE
para que as estatísticas incrementais funcionem corretamente.
Espero que esta visão geral ajude a explicar como você pode aproveitar esse recurso no SQL Server! Qualquer duvida estamos a disposição. Sucesso
Nenhum comentário:
Postar um comentário