Quelle est la signification de n_live_tup
et n_dead_tup
dans pg_stat_user_tables
ou pgstattuple
?
Quelle est la signification de n_live_tup
et n_dead_tup
dans pg_stat_user_tables
ou pgstattuple
?
Réponses:
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 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 HOT:
Ou les lignes mortes peuvent être supprimées par VACUUM FULL
(ou en clair VACUUM
s'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.conf
si vous souhaitez qu'elles soient mises à jour automatiquement. track_counts
devrait ê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 .
SELECT n_live_tup FROM pg_stat_user_tables WHEN relname = 'mytable';
Pourquoi il affiche zéro?mytable
a 6 rangées.