Considero agendar um trabalho do SQL Server que reorganize todas as tabelas todas as noites . Não temos empresa, então não podemos reconstruir online (isso significa que precisamos nos reorganizar). Também não queremos investir muito tempo na fragmentação e manutenção do espaço, por isso buscamos uma solução que possa ser implementada rapidamente e que não exija mais investimentos de tempo no futuro.
O teste em um backup de produção restaurado mostrou que reorganizar é quase tão bom quanto reconstruir para reduzir a fragmentação e recuperar espaço.
Esta é uma ideia razoável? Este esquema cria problemas de disponibilidade ou manutenção? Esta é uma solução razoável a longo prazo?
Existem maneiras melhores - apenas reorganizar todos os índices todas as noites pode ser um desperdício. Por que se preocupar em reorganizar um índice que está 12% fragmentado? Por que reorganizar um índice de 10 GB todas as noites se leva 30 minutos e você reduz a fragmentação apenas em 2% ou 3%? Quanto esforço você deve gastar reorganizando um índice que está em grande parte ou completamente na memória de qualquer maneira - com certeza você economiza algum espaço em disco, mas você tem que retirar o índice do buffer para fazer isso - é a economia de espaço que vale a queda de desempenho que causará ?
Existem scripts gratuitos que ajudam a tomar algumas dessas decisões para você e é fácil substituir os padrões:
O SentryOne também possui uma ferramenta (não gratuita) chamada SQL Sentry , que vai um pouco além, oferecendo relatórios históricos completos, regras e cronogramas amplos a granulares sobre quais índices reorganizar/reconstruir e quando (de todo o servidor a índices individuais e mesmo partição), suporte para operações simultâneas (caso sua janela de manutenção seja apertada), calendário de arrastar e soltar para agendamento e a capacidade de avaliar exatamente como o trabalho que você está fazendo afeta o desempenho.