Estou pensando em truncar uma tabela grande no meu banco de dados de produção. Ele está cheio de dados de log que não são realmente necessários. Depois de pesquisar na Internet, aprendi os seguintes pontos.
- Como TRUNCATE é diferente de DELETE.
- Esse espaço liberado não é liberado de volta para o sistema de arquivos.
- No entanto, você pode encolher o banco de dados para liberar espaço em disco, mas precisa ser cuidadoso e sábio ao fazer isso.
- Que se a tabela que eu TRUNCATE crescer novamente, ela irá reaproveitar o espaço liberado.
Minha pergunta é esta:
Se eu truncar minha tabela, o crescimento de outras tabelas reutilizará esse espaço liberado e, portanto, economizará espaço em disco a longo prazo?
A razão pela qual pergunto isso é que seria bom se novos conteúdos úteis em outras tabelas usassem esse espaço e impedissem o crescimento no disco (pelo menos até que o espaço reutilizado se esgotasse).
Muito obrigado antecipadamente.
Sim, essa é uma das razões pelas quais
SHRINK
ing é bobagem - é apenas uma operação adicional de desperdício para liberar o espaço livre de volta no disco quando crescimentos futuros forem possíveis. O truncamento libera o espaço internamente para o banco de dados, dentro do arquivo de dados, tornando-o aplicável para reutilização por outro crescimento interno dentro desse mesmo banco de dados. Ou seja, à medida que outras tabelas crescem, se houver espaço disponível dentro do arquivo de dados de um truncado anterior, ele será reutilizado para acomodar esse crescimento antes de ter que extrair mais espaço do próprio disco.A
unused
coluna no conjunto de resultadossp_spaceused
informará quanto espaço está atualmente disponível dentro do arquivo de dados que é aplicável para operações de crescimento sem precisar extrair do próprio disco.