Differenza tra idx_tup_read e idx_tup_fetch su Postgres


11

Su Postgres 8.4 quando fai:

select * from pg_stat_all_indexes where relname = 'table_name';

Restituisce i campi idx_tup_read e idx_tup_fetch, qual è la differenza?

Risposte:


12

Quando guardi il codice sorgente della vista, vedrai che idx_tup_readè il risultato della chiamata pg_stat_get_tuples_returned()ed idx_tup_fetchè il risultato della chiamatapg_stat_get_tuples_fetched()

Il manuale descrive le due funzioni come segue:

pg_stat_get_tuples_returned (OID)

Numero di righe lette da scansioni sequenziali quando l'argomento è una tabella o numero di voci di indice restituite quando l'argomento è un indice

pg_stat_get_tuples_fetched (OID)

Numero di righe di tabella recuperate da scansioni bitmap quando l'argomento è una tabella o righe di tabella recuperate da semplici scansioni dell'indice utilizzando l'indice quando argomento è un indice


1

Da documenti 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

quindi, le reads sono quando l'indice restituisce la posizione della riga richiesta e gli fetches sono quando l'indice restituisce le righe della tabella stesse.


0

La pagina della documentazione ufficiale dice che appare la differenza tra loro:

  1. quando l'indice è coinvolto in una scansione dell'indice bitmap
  2. se vengono recuperate righe morte o non ancora impegnate utilizzando l'indice
  3. se si evitano eventuali recuperi di heap mediante una scansione di solo indice
  4. quando si accede all'indice dai controlli dell'ottimizzatore

In tutti questi casi idx_tup_readdiventa maggiore di idx_tup_fetch.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.