Jakie jest znaczenie n_live_tup
i n_dead_tup
w pg_stat_user_tables
lub pgstattuple
?
Jakie jest znaczenie n_live_tup
i n_dead_tup
w pg_stat_user_tables
lub pgstattuple
?
Odpowiedzi:
Te dwie kolumny są wynikiem
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;
Reprezentujący liczbę aktywnych i martwych wierszy (krotek) w tabeli.
Znajdź te funkcje w instrukcji .
Martwe wiersze są usuwane wiersze, które później zostaną ponownie wykorzystane dla nowych wierszy z INSERT
s lub UPDATE
s (spacja, a nie dane). Niektóre martwe wiersze (lub zarezerwowane wolne miejsce) mogą być szczególnie przydatne w przypadku aktualizacji HOT (Tuple tylko na stosie), które mogą efektywnie ponownie wykorzystać miejsce na tej samej stronie danych. Więcej na temat HOT:
Lub martwe rzędy mogą być usunięte przez VACUUM FULL
(lub zwykłe, VACUUM
jeśli ma szczęście) lub podobne operacje na stole, tym samym odpowiednio zmniejszając fizyczny stół.
Za każdym razem, gdy wiersz jest usuwany lub aktualizowany, stara wersja wiersza staje się niewidoczna dla wszystkich innych transakcji rozpoczynających się po zatwierdzeniu transakcji. Wiersz jest całkowicie martwy, gdy tylko nie ma już nieprzyjętych starszych transakcji. Jest to konieczne, aby model MVCC PostgreSQL obsługiwał współbieżność.
To tylko statystyki . Musisz włączyć zbieranie statystyk, postgresql.conf
jeśli chcesz, aby były aktualizowane automatycznie. track_counts
powinien być domyślnie włączony. Pamiętaj, że statystyki nie są aktualizowane natychmiast. Przeczytaj więcej na ten temat w instrukcji .
SELECT n_live_tup FROM pg_stat_user_tables WHEN relname = 'mytable';
Dlaczego pokazuje zero?mytable
ma 6 rzędów.