24.2. Reindexação de rotina #

Em algumas situações vale a pena reconstruir os índices usando periodicamente o comando REINDEX, ou uma série de etapas de reconstrução individuais.

As páginas de índice de Árvore-B que ficam inteiramente vazias são reivindicadas para reutilização. Entretanto, ainda existe a possibilidade de uso ineficiente de espaço: se em uma página apenas algumas chaves de índice forem excluídas, a página permanecerá alocada. Portanto, em um padrão de uso no qual a maioria, mas não todas, as chaves em cada página são ao final excluídas, haverá um uso insatisfatório de espaço. Nesses casos, a reindexação periódica é recomendada.

O potencial de expansão em índices que não são Árvore-B não foi bem estudado. É uma boa ideia monitorar periodicamente o tamanho físico do índice ao usar qualquer tipo de índice que não seja Árvore-B.

Além disso, para índices Árvore-B, um índice recém-construído é um pouco mais rápido de acessar do que um que foi atualizado várias vezes, porque as páginas logicamente adjacentes geralmente também são fisicamente adjacentes em um índice recém-criado. (Esta consideração não se aplica a índices não são Árvore-B.) Pode valer a pena reindexar periodicamente, nem que seja apenas para melhorar a velocidade de acesso.

O comando REINDEX pode ser usado com segurança e facilidade em todos os casos. Este comando requer o bloqueio ACCESS EXCLUSIVE por padrão, portanto, é geralmente preferível executá-lo com sua opção CONCURRENTLY, que requer apenas o bloqueio SHARE UPDATE EXCLUSIVE.