Existe uma maneira de determinar antecipadamente quanto espaço em disco VACUUM FULL
em uma tabela específica retornaria ao sistema operacional? Portanto, você pode decidir se vale a pena o custo de fazê-lo.
Bônus se houver uma consulta simples para fazer isso para cada tabela em um banco de dados/servidor (em vez de fazer cada uma separadamente).
Você precisa da
pgstattuple
extensão para obter a quantidade de espaço livre.Então você poderia correr
onde
size
ereclaimable
estão em bytes.Esteja avisado que esta consulta é um pouco cara.
Isso deve dar uma boa estimativa do espaço que pode ser recuperado, mas na prática será um pouco menor, porque
há sempre algum espaço livre em cada bloco de 8kB que é muito pequeno para caber em outra linha
algumas das tuplas mortas podem não ser recuperáveis se você tiver transações de longa duração