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.