Preciso REINDEX e VACUUM de uma tabela depois de deletar muitas linhas?

10

Estou executando um banco de dados PostgreSQL que possui várias tabelas que armazenam informações de registro. 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 tiverem mais de 30 dias.

Pode haver milhões de linhas excluídas e estamos executando um REINDEX sempre após a exclusão.

Isso é suficiente, ou devemos também estar executando um VACUUM ou VACUUM ANALYZE? Ou o REINDEX não é necessário e devemos, em vez disso, apenas executar um VACUUM ou um VACUUM ANALYZE?

Estamos usando o PostgreSQL 8.2.3, que acredito que não permite a auto-aspiração.

    
por cowgod 23.09.2010 / 18:44

1 resposta

13

Você deve fazer um VACUUM ANALYZE, pois o VACUUM permitirá que o espaço usado pelos dados excluídos seja reutilizado e evitará a invasão de transações, e o ANALYZE atualizará as estatísticas do planejador que devem levar a melhores planos de consulta para suas consultas de relatórios. >

Um REINDEX não é teoricamente necessário, mas você pode achar que isso resulta em melhor desempenho, pois o índice é contíguo.

As páginas de documentação relevantes para 8.2 são aqui (re-indexação de rotina) e aqui (aspiração de rotina) .

    
por 23.09.2010 / 19:45