PostgreSQLLa base de données la plus sophistiquée au monde.

Version anglaise

28.4. Rapporter la progression

PostgreSQL™ a la possibilité de rapporter la progression de certaines commandes lors de leur exécution. Actuellement, la seule commande supportant un rapport de progression est VACUUM. Ceci pourrait être étendu dans le futur.

28.4.1. Rapporter la progression du VACUUM

La vue pg_stat_progress_vacuum contient une ligne pour chaque processus serveur (incluant les processus autovacuum worker) en train d'exécuter un VACUUM. Les tableaux ci-dessous décrivent les informations rapportées et fournissent des informations sur leur interprétation. Le rapport de progression n'est actuellement pas supporté pour VACUUM FULL. De ce fait, les processus serveur exécutant un VACUUM FULL ne feront pas partie de la liste fournie par la vue.

Tableau 28.20. Vue pg_stat_progress_vacuum

Colonne Type Description
pid integer Identifiant (PID) du processus serveur.
datid oid OID de la base de données où est connecté ce processus serveur.
datname name Nom de la base de données où est connecté ce processus serveur.
relid oid OID de la table nettoyée par le VACUUM.
phase text Phase actuelle du vacuum. Voir Tableau 28.21, « Phases du VACUUM ».
heap_blks_total bigint Nombre total de blocs de la table. Ce nombre est récupéré au début du parcours. Des blocs peuvent être ajoutés par la suie, mais ne seront pas (et n'ont pas besoin d'être) visités par ce VACUUM.
heap_blks_scanned bigint Nombre de blocs parcourus dans la table. Comme la carte de visibilité est utilisée pour optimiser les parcours, certains blocs seront ignorés sans inspection ; les blocs ignorés sont inclus dans ce total, pour que ce nombre puisse devenir égal à heap_blks_total quand le nettoyage se termine. Ce compteur avance seulement quand la phase est scanning heap.
heap_blks_vacuumed bigint Nombre de blocs nettoyés dans la table. Sauf si la table n'a pas d'index, ce compteur avance seulement quand la phase est vacuuming heap. Les blocs qui ne contiennent aucune ligne morte sont ignorés, donc le compteur pourrait parfois avancer par de larges incréments.
index_vacuum_count bigint Nombre de cycles de nettoyage d'index réalisés.
max_dead_tuples bigint Nombre de lignes mortes que nous pouvons stocker avant d'avoir besoin de réaliser un cycle de nettoyage d'index, basé sur maintenance_work_mem.
num_dead_tuples bigint Nombre de lignes mortes récupérées depuis le dernier cycke de nettoyage d'index.

Tableau 28.21. Phases du VACUUM

Phase Description
initializing VACUUM se prépare à commencer le parcours de la table. Cette phase est habituellement très rapide.
scanning heap VACUUM parcourt la table. Il va défragmenter chaque bloc si nécessaire et potentiellement réaliser un gel des lignes. La colonne heap_blks_scanned peut être utilisé pour surveiller la progression du parcours.
vacuuming indexes VACUUM est en train de nettoyer les index. Si une table a des index, ceci surviendra au moins une fois par vacuum, après le parcours complet de la table. Cela pourrait arriver plusieurs fois par vacuum si maintenance_work_mem (ou, dans le cas de l'autovacuum, autovacuum_work_mem s'il est configuré) n'est pas suffisamment important pour y enregistrer le nombre de lignes mortes trouvées.
vacuuming heap VACUUM est en train de nettoyer la table. Nettoyer la table est distinguer du parcours de la table, et survient après chaque phase de nettoyage d'index. Si heap_blks_scanned est inférieur à heap_blks_total, le système retournera à parcourir la table après la fin de cette phase. Sinon, il commencera le nettoyage des index une fois cette phase terminée.
cleaning up indexes VACUUM est en train de nettoyer les index. Ceci survient que la table ait été entièrement parcourue et que le vacuum des index et de la table soit terminé.
truncating heap VACUUM est en cours de tronquage de la table pour pouvoir redonner au système d'exploitation les pages vides en fin de relation. Ceci survient après le nettoyage des index.
performing final cleanup VACUUM réalise le nettoyage final. Durant cette phase, VACUUM nettoiera la carte des espaces libres, mettra à jour les statistiques dans pg_class, et rapportera les statistiques au collecteur de statistiques. Une fois cette phase terminée, VACUUM se terminera.