Różnica między idx_tup_read a idx_tup_fetch na Postgres


12

Na Postgres 8.4, gdy:

select * from pg_stat_all_indexes where relname = 'table_name';

Zwraca pola idx_tup_read i idx_tup_fetch, jaka jest różnica?

Odpowiedzi:


13

Patrząc na kod źródłowy widoku, zobaczysz, że idx_tup_readjest to wynik wywołania pg_stat_get_tuples_returned()i idx_tup_fetchwynik wywołaniapg_stat_get_tuples_fetched()

Podręcznik opisuje dwie funkcje w następujący sposób:

pg_stat_get_tuples_returned (oid)

Liczba wierszy odczytanych podczas skanowania sekwencyjnego, gdy argument jest tabelą, lub liczba pozycji indeksu zwróconych, gdy argument jest indeksem

pg_stat_get_tuples_fetched (oid)

Liczba wierszy tabeli pobranych przez skanowanie bitmapy, gdy argument jest tabelą, lub wierszy tabeli pobranych przez proste skanowanie indeksu przy użyciu indeksu, gdy argument jest indeksem


1

Z dokumentów postgresql ,

idx_tup_read is number of index entries returned by scans on this index
idx_tup_fetch is number of live table rows fetched by simple index scans using this index

więc reads są wtedy, gdy indeks zwraca wymaganą pozycję wiersza, a fetches są wtedy, gdy indeks zwraca same wiersze tabeli.


0

Oficjalna strona dokumentacji mówi, że pojawia się różnica między nimi:

  1. gdy indeks jest zaangażowany w skanowanie indeksu map bitowych
  2. jeśli jakieś martwe lub jeszcze nie zatwierdzone wiersze są pobierane przy użyciu indeksu
  3. jeśli jakiekolwiek pobrania sterty są unikane poprzez skanowanie tylko indeksu
  4. gdy dostęp do indeksu uzyskują kontrole optymalizatora

We wszystkich tych przypadkach idx_tup_readstaje się większy niż idx_tup_fetch.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.