Quel est le sens de n_live_tup
et n_dead_tup
dans pg_stat_user_tables
ou pgstattuple
?
Ces deux colonnes sont le résultat de
SELECT pg_stat_get_live_tuples(c.oid) AS n_live_tup
, pg_stat_get_dead_tuples(c.oid) AS n_dead_tup
FROM pg_class c;
Représentant le nombre de lignes vivantes et mortes (tuples) dans le tableau.
Trouvez ces fonctions dans le manuel .
Les lignes mortes sont des lignes supprimées qui seront ultérieurement réutilisées pour de nouvelles lignes à partir de INSERT
s ou UPDATE
s (l'espace, pas les données). Certaines lignes mortes (ou espace libre réservé) peuvent être particulièrement utiles pour les mises à jour HOT (Heap-Only Tuples) qui peuvent réutiliser efficacement l'espace dans la même page de données. Plus sur H.O.T .:
Ou les lignes mortes peuvent être supprimées par VACUUM FULL
(ou plain VACUUM
s'il a de la chance) ou des opérations similaires sur la table, réduisant ainsi la table physique en conséquence.
Chaque fois qu'une ligne est supprimée ou mise à jour, l'ancienne version de ligne devient invisible pour toutes les autres transactions à partir du moment où la transaction a été validée. La ligne est complètement morte dès qu'il n'y a plus de transactions anciennes non validées. Cela est nécessaire pour le modèle MVCC de PostgreSQL pour gérer la concurrence.
Ce ne sont que statistiques . Vous devez activer la collecte de statistiques dans postgresql.conf
si vous souhaitez qu'ils soient mis à jour automatiquement. track_counts
devrait cependant être activé par défaut. Gardez à l'esprit que les statistiques ne sont pas mises à jour instantanément. En savoir plus à ce sujet dans le manuel .