No meu banco de dados Postgres tenho uma tabela grande execution_transcripts
com várias colunas. Duas dessas colunas task
são result
colunas JSONB que contêm valores que geralmente estão na faixa de quilobytes e às vezes na faixa de megabytes.
A mesa está ficando muito grande e estamos trabalhando em uma estratégia para reduzir seu tamanho.
Especificamente, SELECT pg_total_relation_size('treeline_schema.execution_transcript')
retorna 22528457179136
cerca de 20 TB.
Como experiência, em uma cópia de nosso banco de dados de produção, executei a seguinte consulta para anular essas duas colunas nas 2.000 linhas inferiores:
UPDATE execution_transcript
SET result = NULL, task = NULL
WHERE id <= 2000 and id > 0;
Feito isso, vejo que o tamanho total da relação aumentou 319,4 kb para 22528457498624
.
Isso ocorre porque tudo que fiz foi acrescentar novos valores a um log e algum processo de compactação subsequente diminuirá o tamanho da relação no futuro? Preciso executar etapas adicionais se quiser diminuir o espaço ocupado pela tabela?