Diferença entre idx_tup_read e idx_tup_fetch no Postgres

11

No Postgres 8.4, quando você faz:

select * from pg_stat_all_indexes where relname = 'table_name';

Retorna os campos idx_tup_read e idx_tup_fetch, qual é a diferença?

Simon
fonte

Respostas:

12

Ao olhar para o código fonte da visualização, você verá que idx_tup_readé o resultado da chamada pg_stat_get_tuples_returned()e idx_tup_fetché o resultado da chamadapg_stat_get_tuples_fetched()

O manual descreve as duas funções da seguinte maneira:

pg_stat_get_tuples_returned (oid)

Número de linhas lidas por varreduras sequenciais quando argumento é uma tabela ou número de entradas de índice retornadas quando argumento é um índice

pg_stat_get_tuples_fetched (oid)

Número de linhas da tabela buscadas por varreduras de bitmap quando o argumento é uma tabela ou linhas de tabela buscadas por varreduras de índice simples usando o índice quando o argumento é um índice

um cavalo sem nome
fonte
1

Nos documentos do 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

portanto, reads são quando o índice retorna a posição da linha necessária e fetches são quando o índice retorna as próprias linhas da tabela.

Devi
fonte
0

A página da documentação oficial diz que a diferença entre eles aparece:

  1. quando o índice está envolvido em uma verificação de índice de bitmap
  2. se alguma linha morta ou ainda não confirmada for buscada usando o índice
  3. se qualquer busca de heap for evitada por meio de uma varredura apenas de índice
  4. quando o índice é acessado pelas verificações do otimizador

Em todos esses casos, idx_tup_readtorna-se maior que idx_tup_fetch.

volvpavl
fonte