Pular para o conteúdo principal
Documentos
Sintaxe básicaFunções JSONAcionadoresGerenciamento de tabelas e esquemasFunções de cadeia de caracteresFunções matemáticasFunções de dataBancos de dadosÍndices

PostgreSQL VACUUM

O comando `VACUUM` no PostgreSQL é utilizado para limpar e otimizar o armazenamento do banco de dados, recuperando o espaço ocupado por tuplas mortas. Ele garante a operação eficiente do banco de dados, evitando o inchaço e mantendo a integridade das tabelas do banco de dados.

Uso

O comando `VACUUM` é usado para recuperar o armazenamento e melhorar o desempenho de E/S, removendo dados obsoletos. Normalmente, ele é usado depois que as tabelas passam por atualizações ou exclusões significativas.

VACUUM [FULL] [FREEZE] [VERBOSE] [table_name];

Nessa sintaxe, `VACUUM` é seguido por parâmetros opcionais:

  • `FULL` para uma limpeza mais completa,
  • `FREEZE` para marcar agressivamente as tuplas como congeladas, evitando problemas de quebra de ID de transação,
  • `VERBOSE` para obter resultados detalhados,
  • e `table_name` especifica qual tabela você deve aspirar.

Exemplos

1. Vácuo básico

VACUUM;

Esse comando executa uma operação de vácuo padrão em todas as tabelas do banco de dados atual para liberar espaço não utilizado.

2. Aspirar uma tabela específica

VACUUM VERBOSE employees;

Nesse exemplo, você pode aspirar a tabela `employees` e fornecer uma saída detalhada sobre a operação devido à opção `VERBOSE`.

3. Vácuo total em uma tabela

VACUUM FULL products;

O `VACUUM FULL` é usado para recuperar totalmente o espaço da tabela `products`. Ele bloqueia a tabela durante o processo, o que pode bloquear tanto as gravações quanto as leituras, mas permite que você recupere o máximo de espaço.

Dicas e práticas recomendadas

  • Corra regularmente. Programe operações de vácuo de rotina, especialmente em tabelas atualizadas com frequência, para evitar o inchaço do banco de dados.
  • Considere a possibilidade de usar o `AUTOVACUUM`. Ative e configure o `AUTOVACUUM` para automatizar o processo de aspiração e reduzir a manutenção manual.
  • Use o `FULL` com moderação. Reserve o `VACUUM FULL` para situações em que um espaço significativo precisa ser recuperado, pois ele bloqueia a tabela e pode consumir muitos recursos.
  • Monitore o desempenho. Use o `VERBOSE` para obter informações sobre o processo de vácuo e ajustar as configurações com base na saída.
  • Entenda o envolvimento da transação. Faça regularmente o vácuo das tabelas para evitar problemas de quebra de ID de transação, que podem levar à perda de dados.
  • Esteja atento aos impactos no desempenho. Embora um `VACUUM` padrão seja menos prejudicial do que o `VACUUM FULL`, ele ainda pode afetar o desempenho em bancos de dados muito grandes, portanto, planeje adequadamente.