Apa arti dari n_live_tup dan n_dead_tup di pg_stat_user_tables

20

Apa arti dari n_live_tupdan n_dead_tupdi dalam pg_stat_user_tablesatau pgstattuple?

Majid Azimi
sumber

Jawaban:

28

Kedua kolom tersebut adalah hasil dari

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;

Merupakan jumlah baris hidup dan mati (tupel) dalam tabel.
Temukan fungsi - fungsi itu di manual .

Baris mati adalah baris yang dihapus yang nantinya akan digunakan kembali untuk baris baru dari INSERTs atau UPDATEs (spasi, bukan data). Beberapa baris mati (atau ruang kosong yang disediakan) dapat sangat berguna untuk pembaruan HOT (Heap-Only Tuples) yang dapat menggunakan kembali ruang di halaman data yang sama secara efisien. Lebih lanjut tentang HOT:

Atau baris mati dapat dihapus oleh VACUUM FULL(atau polos VACUUMjika beruntung) atau operasi serupa di atas meja, sehingga menyusut tabel fisik sesuai.

Setiap kali baris dihapus atau diperbarui, versi baris lama menjadi tidak terlihat oleh semua transaksi lainnya dimulai setelah transaksi dilakukan. Baris tersebut benar-benar mati segera setelah tidak ada lagi transaksi lama yang tidak dikomit. Itu diperlukan untuk model MVCC PostgreSQL untuk menangani konkurensi.

Itu hanya statistik . Anda harus mengaktifkan pengumpulan statistik postgresql.confjika Anda ingin mereka diperbarui secara otomatis. track_countsharus diaktifkan secara default. Ingatlah bahwa statistik tidak diperbarui secara instan. Baca lebih lanjut tentang itu di manual .

Erwin Brandstetter
sumber
Apa itu Heap-Only Tuples? Ketika saya menerbitkan SELECT n_live_tup FROM pg_stat_user_tables WHEN relname = 'mytable';Mengapa ini menunjukkan nol? mytablememiliki 6 baris.
Majid Azimi
@MajidAzimi: Saya menambahkan sedikit jawaban saya.
Erwin Brandstetter
5
@MajidAzimi Jika Anda ingin belajar banyak tentang MVCC dan HoT, lihat slide dari presentasi Pavan Deolasee di PGCon'08
dbenhur
@dbenhur: Tautan bagus! Presentasi dilakukan dengan sangat baik dan mudah dimengerti.
Erwin Brandstetter
@dbenhur Tautannya tampaknya sudah mati sekarang.
Aryeh Leib Taurog