web-dev-qa-db-fra.com

Dois-je réindexer après avoir rempli le vide sur Postgres 9.4

J'utilise Postgres 9.4.

Je viens de passer l'aspirateur plein. J'ai lu les différences entre le vide et le vide plein et j'ai beaucoup réfléchi si je devais faire fonctionner le vide ou le vide complet. Pour autant que je puisse dire, j'avais besoin d'un vide complet et ma taille de base de données est passée de 48 Go à 24 Go.

Les anciens index seraient-ils devenus obsolètes après avoir rempli le vide et dois-je exécuter la réindexation?

J'ai exécuté "analyse complète détaillée du vide", donc l'analyse est effectuée avec le vide complet.

J'ai lu à plusieurs endroits que pour Postgres> 9.0, je n'ai pas besoin de réindexer après vide complet, mais je veux être sûr que c'est le cas.

27
Akshar Raaj

Un REINDEX immédiatement après un VACUUM FULL est inutile car VACUUM FULL lui-même reconstruit les index.

Ceci est mentionné dans la documentation 9.4 dans Récupération d'espace disque :

... pour récupérer l'espace disque excédentaire qu'il occupe, vous devrez utiliser VACUUM FULL, ou alternativement CLUSTER ou l'une des variantes de réécriture de table d'ALTER TABLE. Ces commandes réécrivent une nouvelle copie entière de la table et créent de nouveaux index pour elle .

Vous avez raison, ce n'était pas le cas avant la version 9.0, qui avait VACUUM FULL réimplémenté différemment.

Jusqu'à la version 8.4, le document de référence pour VACUUM mentionnait la nécessité de réindexer:

L'option FULL ne réduit pas les index; un REINDEX périodique est toujours recommandé. En fait, il est souvent plus rapide de supprimer tous les index, VACUUM FULL, et de recréer les index.

Mais cette mise en garde est désormais obsolète.

39
Daniel Vérité