Executamos uma migração em uma tabela que contém um grande jsonb.
"Apenas" um novo atributo foi adicionado dentro do jsonb: "someAttribute": null
foi adicionado em cada linha.
Após esta migração, o "table_size" aumentou muito: de 20GB para 50GB
É normal?
Esses gráficos mostram o tamanho da tabela, linhas mortas e autovacuums:
Tentei observar o comportamento do TOAST , a limpeza ou o funcionamento do armazenamento físico .
Quando você atualiza uma linha no PostgreSQL, a versão antiga da linha permanece na tabela e uma nova versão é adicionada. Portanto, se você atualizar todas as linhas, o tamanho da tabela aproximadamente dobrará.
Existem duas abordagens:
Após a atualização em massa, execute
Mas cuidado, pois a tabela fica inacessível durante essa operação.
Execute a atualização em lotes como
Após cada lote, execute
para remover os dados antigos da tabela. Isso
VACUUM
não reduzirá o tamanho da tabela, mas liberará as versões de linha antigas e esse espaço poderá ser reutilizado no próximo lote.