Diferencia entre idx_tup_read e idx_tup_fetch en Postgres

11

En Postgres 8.4 cuando haces:

select * from pg_stat_all_indexes where relname = 'table_name';

Devuelve los campos idx_tup_read e idx_tup_fetch, ¿cuál es la diferencia?

Simón
fuente

Respuestas:

12

Al mirar el código fuente de la vista, verá que idx_tup_reades el resultado de llamar pg_stat_get_tuples_returned()y idx_tup_fetches el resultado de llamarpg_stat_get_tuples_fetched()

El manual describe las dos funciones de la siguiente manera:

pg_stat_get_tuples_returned (oid)

Número de filas leídas por exploraciones secuenciales cuando el argumento es una tabla, o número de entradas de índice devueltas cuando el argumento es un índice

pg_stat_get_tuples_fetched (oid)

Número de filas de tabla obtenidas por escaneos de mapa de bits cuando el argumento es una tabla, o filas de tablas obtenidas por escaneos de índice simples que usan el índice cuando el argumento es un índice

un caballo sin nombre
fuente
1

De los documentos 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

entonces, reads son cuando el índice devuelve la posición de la fila requerida y fetches cuando el índice devuelve las filas de la tabla.

Devi
fuente
0

La página de documentación oficial dice que la diferencia entre ellos aparece:

  1. cuando el índice está involucrado en un escaneo de índice de mapa de bits
  2. si se obtienen filas muertas o aún no confirmadas utilizando el índice
  3. si se evitan las capturas de montón mediante una exploración de solo índice
  4. cuando se accede al índice mediante las comprobaciones del optimizador

En todos estos casos se idx_tup_readhace mayor que idx_tup_fetch.

volvpavl
fuente