Unterschied zwischen idx_tup_read und idx_tup_fetch auf Postgres

11

Auf Postgres 8.4, wenn Sie:

select * from pg_stat_all_indexes where relname = 'table_name';

Es gibt die Felder idx_tup_read und idx_tup_fetch zurück. Was ist der Unterschied?

Simon
quelle

Antworten:

12

Wenn Sie sich den Quellcode der Ansicht ansehen, werden Sie feststellen, dass dies idx_tup_readdas Ergebnis eines Aufrufs pg_stat_get_tuples_returned()und idx_tup_fetchdas Ergebnis eines Aufrufs istpg_stat_get_tuples_fetched()

Das Handbuch beschreibt die beiden Funktionen wie folgt:

pg_stat_get_tuples_returned (oid)

Anzahl der Zeilen, die von sequentiellen Scans gelesen werden, wenn das Argument eine Tabelle ist, oder die Anzahl der Indexeinträge, die zurückgegeben werden, wenn das Argument ein Index ist

pg_stat_get_tuples_fetched (oid)

Anzahl der Tabellenzeilen, die von Bitmap-Scans abgerufen werden, wenn das Argument eine Tabelle ist, oder von Tabellenzeilen, die von einfachen Index-Scans abgerufen werden, die den Index verwenden, wenn das Argument ein Index ist

ein Pferd ohne Name
quelle
1

Aus postgresql-Dokumenten ,

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

Das reads ist also, wenn der Index die Position der erforderlichen Zeile zurückgibt, und fetches ist, wenn der Index die Tabellenzeilen selbst zurückgibt.

Devi
quelle
0

Die offizielle Dokumentation Seite sagt , dass der Unterschied zwischen ihnen erscheint:

  1. wenn der Index an einem Bitmap-Index-Scan beteiligt ist
  2. Wenn tote oder noch nicht festgeschriebene Zeilen mithilfe des Index abgerufen werden
  3. Wenn Heap-Abrufe durch einen Nur-Index-Scan vermieden werden
  4. wenn die Optimierungsprüfungen auf den Index zugreifen

In all diesen Fällen idx_tup_readwird größer als idx_tup_fetch.

volvpavl
quelle