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.
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.21. 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.22. |
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.22. 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 après 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.
|