SQL Server 2022: Facilitando a Gestão de Estatísticas com a Opção AUTO_DROP


Gerenciar estatísticas no SQL Server sempre foi uma parte essencial do desempenho e da manutenção do banco de dados. No entanto, alterações de esquema em tabelas com estatísticas criadas manualmente costumavam ser um problema — essas estatísticas podiam bloquear mudanças, exigindo ações manuais para removê-las. Felizmente, a partir do SQL Server 2022 (16.x), esse cenário mudou com a introdução da opção AUTO_DROP.

O Que é AUTO_DROP?

A opção AUTO_DROP é um novo recurso disponível no SQL Server 2022, no Banco de Dados SQL do Azure e na Instância Gerenciada do SQL do Azure. Com ela, você pode criar estatísticas manuais que se comportam como as estatísticas geradas automaticamente — ou seja, elas não bloqueiam alterações de esquema e são descartadas automaticamente quando não forem mais necessárias.

Esse comportamento é habilitado por padrão para todos os bancos de dados novos ou migrados no SQL Server 2022.

Antes do SQL Server 2022

Se você já precisou excluir uma coluna ou modificar a estrutura de uma tabela, mas foi impedido por estatísticas manuais associadas, sabe o quão frustrante isso pode ser. No SQL Server 2019 e versões anteriores, essas estatísticas precisavam ser removidas manualmente antes de executar as alterações de esquema.

Com AUTO_DROP

Agora, ao criar estatísticas com AUTO_DROP = ON, você permite que o SQL Server as remova automaticamente caso elas entrem em conflito com alguma mudança de estrutura. Isso simplifica e agiliza tarefas administrativas e evita que estatísticas antigas fiquem “penduradas” e causem dores de cabeça.

Criando Estatísticas com AUTO_DROP

Veja um exemplo de como criar estatísticas com a opção ativada:

CREATE STATISTICS [minhaEstatistica] 
ON [dbo].[minhaTabela]([ID], [Data], [Usuario]) 
WITH AUTO_DROP = ON;

Esse comando cria uma estatística chamada minhaEstatistica na tabela minhaTabela, com AUTO_DROP habilitado.

Atualizando Estatísticas Existentes

Se você já tem estatísticas criadas manualmente e quer atualizar a configuração para que também usem a remoção automática, é possível fazer isso facilmente:

UPDATE STATISTICS [dbo].[minhaTabela] [minhaEstatistica] 
WITH AUTO_DROP = ON;

Verificando a Configuração de AUTO_DROP

Para checar se as estatísticas existentes estão com AUTO_DROP habilitado, você pode consultar a DMV sys.stats:

SELECT object_id, [name], auto_drop FROM sys.stats;

A coluna auto_drop indica se a opção está ativa (1) ou não (0).

Cuidados e Considerações

  • A opção AUTO_DROP não pode ser aplicada em estatísticas criadas automaticamente, pois elas já usam esse comportamento por padrão.
  • Em alguns casos, especialmente ao restaurar backups de versões anteriores para o SQL Server 2022, os metadados da estatística podem vir incorretos. Para corrigir isso, recomenda-se executar o seguinte comando após a restauração:
EXEC sp_updatestats;

Esse comando atualiza as estatísticas e também ajusta os metadados conforme necessário, garantindo que o comportamento de AUTO_DROP seja aplicado corretamente.

Conclusão

A opção AUTO_DROP representa mais um passo em direção à automação e simplificação da administração de bancos de dados no SQL Server. Ela elimina um dos incômodos relacionados à manutenção de estatísticas e ajuda a garantir que as alterações de esquema ocorram sem atritos desnecessários.

Se você está migrando para o SQL Server 2022 ou já está usando essa versão, aproveite esse recurso para manter seu ambiente mais limpo, organizado e eficiente.


Deixe um comentário