Jakie jest znaczenie n_live_tup i n_dead_tup w pg_stat_user_tables

20

Jakie jest znaczenie n_live_tupi n_dead_tupw pg_stat_user_tableslub pgstattuple?

Majid Azimi
źródło

Odpowiedzi:

28

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 INSERTs lub UPDATEs (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, VACUUMjeś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.confjeśli chcesz, aby były aktualizowane automatycznie. track_countspowinien być domyślnie włączony. Pamiętaj, że statystyki nie są aktualizowane natychmiast. Przeczytaj więcej na ten temat w instrukcji .

Erwin Brandstetter
źródło
Co to są krotki tylko do kupy? Kiedy wystawiam SELECT n_live_tup FROM pg_stat_user_tables WHEN relname = 'mytable';Dlaczego pokazuje zero? mytablema 6 rzędów.
Majid Azimi,
@MajidAzimi: Dodałem trochę do mojej odpowiedzi.
Erwin Brandstetter,
5
@MajidAzimi Jeśli chcesz dowiedzieć się sporo o MVCC i HoT, przejrzyj slajdy z prezentacji Pavana Deolasee'a na PGCon'08
dbenhur
@dbenhur: Nice link! Prezentacja jest bardzo dobrze wykonana i łatwa do zrozumienia.
Erwin Brandstetter
@dbenhur Łącze wydaje się być teraz martwe.
Aryeh Leib Taurog