Ultimamente, em vez de apenas aumentar arquivos quando eles alcançam 80% de utilização, tenho sido mais proativo na recuperação de espaço por meio de truques comuns como desfragmentar pilhas, adicionar e soltar índices agrupados, implementar compactação de linhas ou páginas etc.
No entanto, existem alguns casos em que consegui recuperar ainda mais espaço executando o DBCC CLEANTABLE . Com centenas de bancos de dados em meu ambiente, não é possível saber o que os usuários fazem em cada um deles e é completamente aceitável que ocorram alterações envolvendo a eliminação de colunas de comprimento fixo. Normalmente, encontrei essas oportunidades examinando as contagens de linhas x contagens de páginas em alguns scripts de utilização de espaço de objeto que escrevi. Eu gostaria de dar um passo adiante, tentando automatizar a detecção desse tipo de cenário.
O que eu gostaria de saber é se alguém por aí está monitorando ativamente esse tipo de oportunidade e, se sim, o que você procura especificamente?
Meu pensamento era escrever algo como reunir o tamanho máximo e mínimo de uma linha, o número de linhas na tabela, o número de páginas alocadas e o número de páginas usadas, depois fazer algumas contas básicas para registrar resultados que estão bem fora do que seria "esperado".
fonte
Respostas:
A solução que eu pensaria para esse problema é executar semanalmente um trabalho que executará sp_spaceused para todas as tabelas em um banco de dados e salve esses dados em uma tabela. Se houver diferenças no tamanho de cada tabela maior que ... digamos ... 10%, eu executaria a tabela limpa dbcc.
Meu código para percorrer os tamanhos das tabelas é assim:
Agora você só precisa criar a lógica que verificará qual seria a alteração de tamanho durante a semana e a agendará.
fonte