VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ tabela ] VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ tabela [ (coluna [, ...] ) ] ]
Seleciona uma limpeza "completa", que pode recuperar mais espaço, mas é muito mais demorada e bloqueia a tabela em modo exclusivo.
Seleciona um "congelamento" agressivo das tuplas.
Produz um relatório detalhado da atividade de limpeza de cada tabela.
Atualiza as estatísticas utilizadas pelo otimizador para determinar o modo mais eficiente de executar uma consulta.
O nome da tabela específica a ser limpa. Por padrão todas as tabelas do banco de dados corrente.
O nome da coluna específica a ser analisada. Por padrão todas as colunas.
O comando terminou.
O cabeçalho do relatório da tabela.
A análise da tabela.
A análise de um índice da tabela.
O comando VACUUM recupera a área de armazenamento ocupada pelas tuplas excluídas. Na operação normal do PostgreSQL as tuplas que são excluídas, ou que se tornam obsoletas devido a uma atualização, não são fisicamente removidas da tabela; elas permanecem presentes até que o comando VACUUM seja executado. Portanto, é necessário executar o VACUUM periodicamente, especialmente em tabelas freqüentemente atualizadas.
Sem nenhum parâmetro, o VACUUM processa todas as tabelas do banco de dados corrente. Com um parâmetro, o VACUUM processa somente esta tabela.
O comando VACUUM ANALYZE executa o comando VACUUM e depois o comando ANALYZE para cada tabela selecionada. Esta é uma forma de combinação adequada para os scripts das rotinas de manutenção. Consulte o comando ANALYZE para obter mais detalhes sobre o seu processamento.
Somente o VACUUM (sem o FULL) simplesmente recupera o espaço e torna-o disponível para ser reutilizado. Esta forma do comando pode operar em paralelo com a leitura e escrita normal da tabela. O VACUUM FULL executa um processamento mais extenso, incluindo a movimentação das tuplas através de blocos para tentar compactar a tabela para o menor número de blocos de disco. Esta forma é muito mais lenta e requer o bloqueio exclusivo de cada tabela para processá-la.
O FREEZE é uma opção com finalidade especial, que faz as tuplas serem marcadas como "congeladas" logo que seja possível, em vez de aguardar até que sejam bastante velhas. Se for realizado quando não existir nenhuma outra transação sendo executada no mesmo banco de dados, então é garantido que todas as tuplas do banco de dados sejam "congeladas" e não estarão sujeitas aos problemas do recomeço do ID de transação, não importa quanto tempo o banco de dados for deixado sem executar o VACUUM. O FREEZE não é recomendado para uso rotineiro. Sua única utilização esperada é em conjunto com a preparação dos bancos de dados de gabarito dos usuários, ou outros bancos de dados que são unicamente para leitura e não receberão as operações da rotina de manutenção VACUUM. Consulte o Guia do Administrador para obter detalhes.
Recomenda-se que os bancos de dados de produção ativos sejam VACUUM-nizados freqüentemente (pelo menos toda noite), para que sejam removidas as linhas expiradas. Após incluir ou excluir um grande número de linhas, pode ser uma boa idéia executar o comando VACUUM ANALYZE para a tabela afetada. Esta operação vai atualizar os catálogos do sistema com os resultados de todas as mudanças recentes, permitindo ao otimizador de consultas do PostgreSQL fazer melhores escolhas ao planejar as consultas dos usuários.
A opção FULL não é recomendada para uso rotineiro, mas pode ser útil em casos especiais. Um exemplo é após ter sido removida a maioria das linhas da tabela e deseja-se que a tabela seja fisicamente encolhida para ocupar menos espaço em disco. O comando VACUUM FULL geralmente encolhe mais a tabela do que o comando VACUUM simples.
Abaixo está mostrado um exemplo da execução do comando VACUUM em uma tabela do banco de dados regression:
regression=> VACUUM VERBOSE ANALYZE onek;
NOTICE: --Relation onek--
NOTICE: Index onek_unique1: Pages 14; Tuples 1000: Deleted 3000.
CPU 0.00s/0.11u sec elapsed 0.12 sec.
NOTICE: Index onek_unique2: Pages 16; Tuples 1000: Deleted 3000.
CPU 0.00s/0.10u sec elapsed 0.10 sec.
NOTICE: Index onek_hundred: Pages 13; Tuples 1000: Deleted 3000.
CPU 0.00s/0.10u sec elapsed 0.10 sec.
NOTICE: Index onek_stringu1: Pages 31; Tuples 1000: Deleted 3000.
CPU 0.01s/0.09u sec elapsed 0.10 sec.
NOTICE: Removed 3000 tuples in 70 pages.
CPU 0.02s/0.04u sec elapsed 0.07 sec.
NOTICE: Pages 94: Changed 0, Empty 0; Tup 1000: Vac 3000, Keep 0, UnUsed 0.
Total CPU 0.05s/0.45u sec elapsed 0.59 sec.
NOTICE: Analyzing onek
VACUUM