A manutenção preventiva e corretiva no PostgreSQL é fundamental para manter a performance e a integridade do banco de dados. Abaixo estão os principais procedimentos recomendados, organizados por nível de impacto.
O REINDEX recria os índices do banco de dados, corrigindo possíveis corrupções e reduzindo fragmentação.
⚠️ Importante!
Esse procedimento deve ser executado sem nenhum usuário logado no sistema, pois pode gerar bloqueios.
REINDEX (VERBOSE) DATABASE "nome_do_banco";
Indicado quando:
O ANALYZE coleta estatísticas sobre tabelas e índices, permitindo que o otimizador de consultas escolha os melhores planos de execução.
Ele melhora significativamente a performance de:
Especialmente recomendado após grandes inserções, atualizações ou exclusões.
DO $$
DECLARE
r RECORD;
BEGIN
FOR r IN (
SELECT schemaname, tablename
FROM pg_catalog.pg_tables
WHERE schemaname NOT IN ('pg_catalog', 'information_schema')
)
LOOP
EXECUTE 'ANALYZE ' || quote_ident(r.schemaname) || '.' ||
quote_ident(r.tablename);
END LOOP;
END $$;
-- Analisa colunas específicas:
ANALYZE nome_da_tabela (coluna1, coluna2);
-- Analisa exibindo detalhes:
ANALYZE VERBOSE nome_da_tabela;
Boa prática:
ExecutarANALYZEregularmente ou utilizarVACUUM ANALYZEapós cargas massivas de dados para manter o desempenho ideal.
Em casos mais extremos — como bancos muito grandes, com lentidão persistente ou crescimento desproporcional sem aumento real de dados — pode ser necessário realizar um “rebuild” completo.
O processo consiste em:
Esse procedimento recria todos os objetos do banco “limpos”, eliminando fragmentações internas.
pg_dump -Fc -U usuario -h host nome_do_banco > backup.dump
dropdb nome_do_banco
createdb nome_do_banco
pg_restore -U usuario -h host -d nome_do_banco backup.dump
O backup também pode ser realizado pelo DBeaver, que costuma agilizar o processo em ambientes gráficos.
Indicado quando:
O CLUSTER reorganiza fisicamente os dados de uma tabela com base em um índice específico, melhorando a performance de leitura.
Exemplo:
CLUSTER lctofisent USING fklctofisentcfgestabfis;
Indicado para:
Não existe uma regra fixa. A necessidade depende do cenário e do comportamento do banco. No entanto, são indicados: