Was ist die Bedeutung von n_live_tup
und n_dead_tup
in pg_stat_user_tables
oder pgstattuple
?
Was ist die Bedeutung von n_live_tup
und n_dead_tup
in pg_stat_user_tables
oder pgstattuple
?
Antworten:
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 INSERT
s oder UPDATE
s wiederverwendet werden (das Leerzeichen, nicht die Daten). Einige tote Zeilen (oder reservierter freier Speicherplatz) können besonders nützlich sein für HOT-Updates (Nur-Heap-Tupel), die Speicherplatz auf derselben Datenseite effizient wiederverwenden können. Mehr zu HOT:
Oder tote Zeilen können durch VACUUM FULL
(oder einfach, VACUUM
wenn es Glück hat) oder ähnliche Operationen auf dem Tisch entfernt werden, wodurch der physische Tisch entsprechend verkleinert wird.
Jedes Mal, 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 ungültig, sobald keine nicht festgeschriebenen älteren Transaktionen mehr vorhanden sind. Dies ist erforderlich, damit das MVCC-Modell von PostgreSQL die Parallelität verarbeiten kann.
Das sind nur Statistiken . Sie müssen die Statistikerfassung aktivieren, postgresql.conf
wenn Sie möchten, dass sie automatisch aktualisiert werden. track_counts
sollte jedoch standardmäßig aktiviert sein. Beachten Sie, dass die Statistiken nicht sofort aktualisiert werden. Lesen Sie mehr dazu im Handbuch .
SELECT n_live_tup FROM pg_stat_user_tables WHEN relname = 'mytable';
Warum zeigt es Null?mytable
hat 6 Reihen.