web-dev-qa-db-fra.com

Quelle est la signification de n_live_tup et n_dead_tup dans pg_stat_user_tables

Quel est le sens de n_live_tup et n_dead_tup dans pg_stat_user_tables ou pgstattuple?

20
Majid Azimi

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 INSERTs ou UPDATEs (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 .

29
Erwin Brandstetter