Estou executando o Postgres 8.3.3. Eu tenho um banco de dados postgres em um sistema de arquivos Linux que está bastante cheio. Executei VACUUM e VACUUM FULL, mas nenhum espaço foi devolvido ao sistema operacional. Quando observo o tamanho da tabela no postgres, isso mostra que a tabela está usando consideravelmente menos espaço (até 80 MB de ~ 800 MB).
Há algo mais que deve ser executado?
Primeiro, você deve atualizar para a versão mais recente da ramificação 8.3 (que é 8.3.17). Houve várias correções para VACUUM e autovacuum após o 8.3.3 (embora eu não ache que nenhuma delas resolveria seu problema)
Acho que há situações em que mesmo o VACUUM FULL não liberará todo o espaço possível. Você pode tentar executar CLUSTER na tabela, que faz um trabalho melhor de reconstruí-la do que VACUUM FULL (especialmente com a versão antiga)
A desvantagem do CLUSTER é que ele requer mais espaço intermediário (porque a reconstrução não é feita "no local"), portanto, se o seu sistema de arquivos estiver realmente cheio, talvez não seja possível.
O PostgreSQL retorna espaço livre para o sistema operacional para uma tabela quando a) o espaço livre está bem no final da tabela eb) ele pode obter um bloqueio exclusivo na tabela. VACUUM FULL tenta forçar essas duas coisas a acontecer, mas provavelmente há uma dúzia de bugs nessa área corrigidos por versões 8.3 posteriores que você pode encontrar na 8.3.3.
Observe que o espaço em disco é ocupado por tabelas e índices aqui, e VACUUM FULL é conhecido por aumentar o tamanho do índice enquanto tenta reduzir o tamanho da tabela. Use uma consulta como as de Disk Usage para ver onde está a distribuição de espaço. Se na verdade são os índices que estão usando o espaço, nenhuma quantidade de VACUUM consertará as coisas; tente REINDEX neles. Isso precisará de mais espaço para manter a versão reconstruída. Se realmente faltar espaço, talvez seja necessário descartar um índice temporário e recriá-lo. O CLUSTER reconstruirá completamente a tabela inteira e jogará fora todo o lixo antigo, mas precisa ser capaz de manter uma cópia totalmente nova da tabela e todos os índices para fazer isso.