it-swarm-eu.dev

Was bedeutet n_live_tup und n_dead_tup in pg_stat_user_tables?

Was ist die Bedeutung von n_live_tup und n_dead_tup im pg_stat_user_tables oder pgstattuple?

20
Majid Azimi

Diese beiden Spalten sind das Ergebnis von

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;

Darstellung der Anzahl der lebenden und toten Zeilen (Tupel) in der Tabelle.
Finden Sie diese Funktionen im Handbuch .

Tote Zeilen sind gelöschte Zeilen, die später für neue Zeilen aus INSERTs oder UPDATEs (dem Leerzeichen, nicht den Daten) wiederverwendet werden. Einige tote Zeilen (oder reservierter freier Speicherplatz) können besonders nützlich sein für HOT-Updates (Heap-Only Tuples), mit denen Speicherplatz auf derselben Datenseite effizient wiederverwendet werden kann. Mehr zu H.O.T.:

Oder tote Zeilen können durch VACUUM FULL (Oder einfache VACUUM, wenn Sie Glück haben) oder ähnliche Operationen auf der Tabelle entfernt werden, wodurch die physische Tabelle entsprechend verkleinert wird.

Immer wenn eine Zeile gelöscht oder aktualisiert wird, wird die alte Zeilenversion für alle anderen Transaktionen unsichtbar, die nach dem Festschreiben der Transaktion beginnen. Die Zeile ist vollständig tot, sobald keine nicht festgeschriebenen älteren Transaktionen mehr vorhanden sind. Dies ist erforderlich, damit das MVCC-Modell von PostgreSQL die Parallelität verarbeitet.

Das sind nur Statistiken . Sie müssen die Statistiksammlung in postgresql.conf Aktivieren, wenn Sie möchten, dass sie automatisch aktualisiert werden. track_counts Sollte jedoch standardmäßig aktiviert sein. Beachten Sie, dass Statistiken nicht sofort aktualisiert werden. Lesen Sie mehr dazu im Handbuch .

29