Monthly Archives: April 2017

Dicas sobre Vacuum no Postgres

O Vacuum limpa e opcionalmente analisa um banco de dados e recupera a área de armazenamento ocupada pelos registros excluídos. Na operação normal do Postgres os registros excluídos ou tornados obsoletos por causa de uma atualização não são fisicamente removidos das tabelas, permanecem presentes até o comando Vacuum ser executado. Portanto é necessário executar o comando Vacuum periodicamente, especialmente em tabelas frequentemente atualizadas, sem nenhum parâmetro o Vacuum processa todas as tabelas do banco de dados correntes.

O comando Vacuum Analyze executa o Vacuum e depois o Analyze para cada tabela selecionada, esta é uma forma de combinação útil para scripts de rotinas de manutenção. O Analyze atualiza as estatísticas utilizadas pelo planejador para determinar o modo mais eficiente de executar um comando.

O comando Vacuum simples (sem o Full) apenas recupera o espaço, tornando-o disponível para ser reutilizado. Esta forma do comando pode operar em paralelo com a leitura e escrita normal da tabela, porque não é obtido um bloqueio exclusivo. O Vacuum Full executa um processamento mais extenso, incluindo a movimentação das tuplas entre blocos para tentar compactar a tabela no menor número de blocos de disco possível, esta forma é muito mais lenta e requer bloqueio exclusivo de cada tabela enquanto está sendo processada.

Por último temos a opção do Freeze, que seleciona um congelamento agressivo das tuplas, esta opção não é muito recomendada e é provável que seja retirada de futuras versões do Postgres.