> > 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
