J'exécute une base de données PostgreSQL qui a plusieurs tables qui stockent des informations de journalisation. Ces informations sont fournies à des fins de rapport uniquement et sont transférées dans un fichier et supprimées de la base de données si elles datent de plus de 30 jours.
Il peut y avoir des millions de lignes supprimées, et nous avons exécuté un REINDEX à chaque fois après la suppression.
Est-ce suffisant, ou devrions-nous également exécuter un VIDE ou ANALYSER LE VIDE? Ou le REINDEX n'est-il pas nécessaire et devrions-nous simplement exécuter un VIDE ou ANALYSER LE VIDE?
Nous utilisons PostgreSQL 8.2.3, qui, je crois, ne permet pas la mise sous vide automatique.
Réponses:
Vous devez effectuer une ANALYSE DU VIDE, car le VIDE permettra la réutilisation de l'espace utilisé par les données supprimées et empêchera le bouclage des transactions, et l'ANALYSE mettra à jour les statistiques du planificateur, ce qui devrait conduire à de meilleurs plans de requête pour vos requêtes de rapport.
Un REINDEX n'est pas théoriquement requis, mais vous pouvez constater qu'il en résulte de meilleures performances car l'index est contigu.
Les pages de documentation pertinentes pour 8.2 sont ici (réindexation de routine) et ici (aspiration de routine) .
la source