Eu tenho uma grande tabela de série temporal particionada onde cada partição é armazenada em seu próprio arquivo. Como é um particionamento baseado em séries temporais dividido por semana e estou armazenando apenas dados novos, nunca tenho mais de 2 partições nas quais estou gravando ativamente ao mesmo tempo. Eu tenho um FILLFACTOR definido como 75 no índice, pois os dados estão chegando aleatoriamente.
As antigas partições de dados estão ocupando bastante espaço, utilizando apenas cerca de 60-70% desse espaço. É possível alterar automaticamente o FILLFACTOR nas referidas partições, reconstruir os índices e reduzir os arquivos? Como não estou mais gravando nessas partições, elas não devem crescer novamente.
Sim, isso é possível. Aqui está como
Deve ser bastante trivial automatizar isso com um trabalho de agente SQL.
O passo 3 é melhor executado nesta ordem:
Além disso, se você tiver o SQL Server Enterprise Edition, poderá compactar os dados com
PAGE
compactação. Isso exigiria um processo diferente:ALTER
a tabela original para ativar a compactação de página nas partições agora vazias (aquelas que você desligou)SWITCH
os dados compactados de volta à tabela original.Com o SQL Server 2014 Enterprise Edition, você pode fazer o procedimento acima como uma operação online diretamente na partição que deseja compactar. No entanto, ainda é uma boa ideia descartar os índices secundários em uma cópia primeiro, porque isso geralmente oferece um layout de dados melhor no disco.