Estou executando um banco de dados PostgreSQL que possui várias tabelas que armazenam informações de log. Essas informações são apenas para fins de relatório e são despejadas em um arquivo e excluídas do banco de dados se houver mais de 30 dias.
Pode haver milhões de linhas excluídas e nós executamos um REINDEX todas as vezes após a exclusão.
Isso é suficiente ou também devemos executar um VACUUM ou VACUUM ANALYZE? Ou é o REINDEX não é necessário e nós devemos, em vez apenas executar um aspirador ou VACUUM ANALYZE?
Estamos usando o PostgreSQL 8.2.3, que acredito não permitir a aspiração automática.
postgresql
database-performance
vacuum
vaqueiro
fonte
fonte
Respostas:
Você deve executar um VACUUM ANALYZE, pois o VACUUM permitirá que o espaço usado pelos dados excluídos seja reutilizado e evite a transação envolvendo as transações, e o ANALYZE atualizará as estatísticas do planejador, o que levará a melhores planos de consulta para suas consultas de relatórios.
Teoricamente, um REINDEX não é necessário, mas você pode achar que resulta em melhor desempenho, pois o índice é contíguo.
As páginas de documentação relevantes para 8.2 estão aqui (reindexação de rotina) e aqui (aspiração de rotina) .
fonte