Qual a diferença de reindex e vacuum analyse?
Qual a diferença de reindex e vacuum analyse?
Olá Daniel, tudo bem?
Peço desculpas pela demora no retorno.
Utilizamos o REINDEX, quando precisamos reconstruir um índice já existente no nosso banco de dados. Segundo a documentação do PostgreSQL quando o índice é reconstruído, é utilizado os dados armazenados na tabela do índice já existente, substituindo a cópia antiga do índice.
Existem alguns casos que o REINDEX pode ser utilizado, como por exemplo, um índice foi corrompido e não contém mais dados válidos, assim será necessário que você realize a reconstrução do índice.
Utilizamos o VACUUM, quando queremos realizar uma “coleta de lixo” no nosso banco de dados. Quando executamos o VACUUM, ele faz uma busca na tabela para identificar as tuplas mortas, ou seja, as tuplas que foram excluídas ou atualizadas na tabela, pois, estas tuplas, não são removidas fisicamente das tabelas após as operações realizadas. Por este motivo, é indicado que utilizemos o VACUUM periodicamente.
Segundo a documentação do PostgreSQL o parâmetro ANALYZE é utilizado para atualizar as estatísticas usadas pelo planejador para determinar a maneira mais eficiente de executar uma consulta.
Então ao utilizar comando VACUUM ANALYZE, estamos realizando a exclusão permanente das tuplas mortas e já atualizando as estatísticas do banco de dados sobre esta tabela.
A título de curiosidade, caso queria ler um pouco mais a respeito do assunto, como por exemplo, ver os parâmetros que cada um deles pode utilizar, recomendo a leitura da documentação do PostgreSQL, sobre REINDEX e VACUUM.
Abraços e bons estudos!