PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 14.11 » Administration du serveur » Planifier les tâches de maintenance » Ré-indexation régulière

25.2. Ré-indexation régulière

Dans certains cas, il est intéressant de reconstruire périodiquement les index par la commande REINDEX ou par une série d'étapes individuelles de reconstruction.

Les blocs devenues complètement vides d'un index B-tree sont réclamées pour leur ré-utilisation. Mais, il existe toujours une possibilité d'utilisation peu efficace de l'espace : si, sur un bloc, seulement quelques clés d'index ont été supprimés, le bloc reste alloué. En conséquence, si seulement quelques clés sont supprimées, vous devrez vous attendre à ce que l'espace disque soit très mal utilisé. Dans de tels cas, la réindexation périodique est recommandée.

Le potentiel d'inflation des index qui ne sont pas des index B-tree n'a pas été particulièrement analysé. Surveiller périodiquement la taille physique de ces index est une bonne idée.

De plus, pour les index B-tree, un index tout juste construit est légèrement plus rapide qu'un index qui a été mis à jour plusieurs fois parce que les blocs adjacents logiquement sont habituellement aussi physiquement adjacents dans un index nouvellement créé(cette considération ne s'applique pas aux index non B-tree). Il pourrait être intéressant de ré-indexer périodiquement simplement pour améliorer la vitesse d'accès.

REINDEX peut être utilisé en toute sécurité et très facilement dans tous les cas. Cette commande nécessite un verrou ACCESS EXCLUSIVE par défaut. De ce fait, il est souvent préférable de l'exécuter avec l'option CONCURRENTLY qui requiert seulement un verrou SHARE UPDATE EXCLUSIVE.