>
> Existe um processo nosso de deleção de oids que ao deletarmos uma
> determinada quantidade de registros (+oids) de uma tabela, fazemos um
> lo_unlink do oid.  Isso libera o espaço em disco? ou tenho que realmente
> usar vacuum full e somente ele faz esse trabalho?
>
> recentemente estava com uma tabela com 40gb de dados e ao fazer um
> truncate simples da tabela, percebi qe o espaco do disco foi liberado,
> ótimo para truncar toda a tabela, mas existe uma forma de realizar um
> truncate condicional? assim como o delete from?
>
> Não, não existe.
A melhor solução para você é particionar essa tabela, cada partição
contendo os dados que você precisa remover de cada vez. É o que faço em
todos os ambientes de produção que tem esse tipo de comportamento.

Outra alternativa é lidar com esse espaço extra e usar versões recentes do
PostgreSQL (8.4 ou superior). O próprio vacuum (não full) se encarrega de
reutilizar o espaço removido, ou seja, na hora do DELETE FROM não haverá
recuperação do espaço, mas novos registros ocuparão esse espaço
automaticamente. Um bom afinamento do autovacuum pode garantir isso também,
mas em algumas poucas situações a estratégia de particionar é melhor.

[]s
Flavio Gurgel
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a