Ý nghĩa của n_live_tup
và n_dead_tup
trong pg_stat_user_tables
hoặc là pgstattuple
gì?
Ý nghĩa của n_live_tup
và n_dead_tup
trong pg_stat_user_tables
hoặc là pgstattuple
gì?
Câu trả lời:
Hai cột đó là kết quả của
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;
Thể hiện số lượng hàng sống và chết (bộ dữ liệu) trong bảng.
Tìm các chức năng trong hướng dẫn .
Các hàng chết là các hàng bị xóa mà sau này sẽ được sử dụng lại cho các hàng mới từ INSERT
s hoặc UPDATE
s (khoảng trắng, không phải dữ liệu). Một số hàng chết (hoặc không gian trống dành riêng) có thể đặc biệt hữu ích cho các bản cập nhật NÓNG (Bộ dữ liệu chỉ có Heap) có thể sử dụng lại không gian trong cùng một trang dữ liệu một cách hiệu quả. Thêm về NÓNG:
Hoặc các hàng chết có thể được loại bỏ bởi VACUUM FULL
(hoặc đơn giản VACUUM
nếu nó gặp may) hoặc các thao tác tương tự trên bàn, do đó thu hẹp bảng vật lý tương ứng.
Bất cứ khi nào một hàng bị xóa hoặc cập nhật, phiên bản hàng cũ sẽ trở nên vô hình đối với tất cả các giao dịch khác bắt đầu sau khi giao dịch được thực hiện. Hàng hoàn toàn chết ngay khi không còn giao dịch cũ nào không được cam kết. Điều đó là cần thiết cho mô hình MVCC của PostgreQuery để xử lý đồng thời.
Đó chỉ là số liệu thống kê . Bạn cần kích hoạt thu thập số liệu thống kê postgresql.conf
nếu bạn muốn chúng được cập nhật tự động. track_counts
nên được mặc định mặc dù. Hãy nhớ rằng số liệu thống kê không được cập nhật ngay lập tức. Đọc thêm về điều đó trong hướng dẫn .
SELECT n_live_tup FROM pg_stat_user_tables WHEN relname = 'mytable';
Tại sao nó hiển thị bằng không?mytable
có 6 hàng.