Durante uma operação normal do PostgreSQL, os registros
que são deletados ou atualizados não são fisicamente removidos
das tabelas, permanecendo presentes até a execução de um comando
chamado vacuum.
Assim é necessário realizar vacuum periodicamente, especialmente
em tabelas freqüentemente usadas.
Quando vacuum estiver sem parâmetro, ele irá processar cada tabela
do banco de dados, mas quando existe algum parâmetro no vacuum
somente a tabela é processada.
Vacuum analyze
Executa um vacuum e depois um analyze para cada tabela selecionada.
Esta é uma forma de combinação para manutenção rotineira de scripts,
veja ANALYZE para mais informações a respeito do processamento.
Somente vacuum, simplesmente reivindica espaço e o torna disponível
para a reutilização.
Utilizando o Vacuum Analyze:
$ VACUUM ANALYZE tabela;
Se você quiser ver o status, utilize o parâmetro VERBOSE:
$ VACUUM ANALYZE VERBOSE tabela;
Vacuum full
Realiza um processamento mais extensivo, inclusive movendo as
tuplas através de blocos, para tentar compactar a tabela ao
número mínimo de blocos. Esta forma é muito lenta e exige um
bloqueio exclusivo em cada tabela enquanto estiver sendo
processada:
$ VACUUM FULL;
Se você quiser ver o status, utilize o paramento VERBOSE:
$ VACUUM FULL VERBOSE;