Qual è il significato di n_live_tup
e n_dead_tup
in pg_stat_user_tables
o pgstattuple
?
Qual è il significato di n_live_tup
e n_dead_tup
in pg_stat_user_tables
o pgstattuple
?
Risposte:
Queste due colonne sono il risultato di
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;
Rappresenta il numero di righe vive e morte (tuple) nella tabella.
Trova quelle funzioni nel manuale .
Le righe morte sono righe eliminate che verranno successivamente riutilizzate per nuove righe da INSERT
s o UPDATE
s (lo spazio, non i dati). Alcune righe morte (o spazio libero riservato) possono essere particolarmente utili per gli aggiornamenti HOT (tuple solo heap) che possono riutilizzare lo spazio nella stessa pagina di dati in modo efficiente. Altro su HOT:
Oppure le righe morte possono essere rimosse da VACUUM FULL
(o semplicemente VACUUM
se diventa fortunato) o operazioni simili sulla tabella, restringendo in tal modo la tabella fisica di conseguenza.
Ogni volta che una riga viene eliminata o aggiornata, la versione della riga precedente diventa invisibile a tutte le altre transazioni a partire dall'impegno della transazione. La riga è completamente morta non appena non ci sono più transazioni precedenti senza commit. Ciò è necessario affinché il modello MVCC di PostgreSQL gestisca la concorrenza.
Quelle sono solo statistiche . È necessario abilitare la raccolta delle statistiche postgresql.conf
se si desidera che vengano aggiornati automaticamente. track_counts
dovrebbe essere attivo di default, però. Tieni presente che le statistiche non vengono aggiornate istantaneamente. Maggiori informazioni nel manuale .
SELECT n_live_tup FROM pg_stat_user_tables WHEN relname = 'mytable';
Perché mostra zero?mytable
ha 6 file.