Quelle est la signification de n_live_tup et n_dead_tup dans pg_stat_user_tables

20

Quelle est la signification de n_live_tupet n_dead_tupdans pg_stat_user_tablesou pgstattuple?

Majid Azimi
la source

Réponses:

28

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 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 HOT:

Ou les lignes mortes peuvent être supprimées par VACUUM FULL(ou en clair VACUUMs'il obtient 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 que le modèle MVCC de PostgreSQL gère la concurrence.

Ce ne sont que des statistiques . Vous devez activer la collecte de statistiques postgresql.confsi vous souhaitez qu'elles soient mises à jour automatiquement. track_countsdevrait être activé par défaut, cependant. Gardez à l'esprit que les statistiques ne sont pas mises à jour instantanément. En savoir plus à ce sujet dans le manuel .

Erwin Brandstetter
la source
Qu'est-ce que les tuples Heap-Only? Quand j'émets SELECT n_live_tup FROM pg_stat_user_tables WHEN relname = 'mytable';Pourquoi il affiche zéro? mytablea 6 rangées.
Majid Azimi
@MajidAzimi: J'ai ajouté un peu à ma réponse.
Erwin Brandstetter
5
@MajidAzimi Si vous voulez en savoir plus sur MVCC et HoT, consultez les diapositives de la présentation
dbenhur
@dbenhur: joli lien! La présentation est très bien faite et facile à comprendre.
Erwin Brandstetter
@dbenhur Le lien semble être mort maintenant.
Aryeh Leib Taurog