Différence entre idx_tup_read et idx_tup_fetch sur Postgres


12

Sur Postgres 8.4 lorsque vous faites:

select * from pg_stat_all_indexes where relname = 'table_name';

Il renvoie les champs idx_tup_read et idx_tup_fetch, quelle est la différence?

Réponses:


13

Lorsque vous regardez le code source de la vue, vous verrez que idx_tup_readc'est le résultat de l'appel pg_stat_get_tuples_returned()et idx_tup_fetchle résultat de l'appelpg_stat_get_tuples_fetched()

Le manuel décrit les deux fonctions comme suit:

pg_stat_get_tuples_returned (oid)

Nombre de lignes lues par des analyses séquentielles lorsque l'argument est une table ou nombre d'entrées d'index renvoyées lorsque l'argument est un index

pg_stat_get_tuples_fetched (oid)

Nombre de lignes de table extraites par des analyses bitmap lorsque l'argument est une table, ou des lignes de table extraites par des analyses d'index simples à l'aide de l'index lorsque l'argument est un index


1

Depuis les documents 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

ainsi, les reads sont lorsque l'index renvoie la position de la ligne requise et les fetches sont lorsque l'index renvoie les lignes de la table elles-mêmes.


0

La page de documentation officielle indique que la différence entre eux apparaît:

  1. lorsque l'index est impliqué dans un balayage d'index bitmap
  2. si des lignes mortes ou non encore validées sont récupérées à l'aide de l'index
  3. si des récupérations de tas sont évitées au moyen d'une analyse d'index uniquement
  4. lorsque l'index est accessible par les contrôles de l'optimiseur

Dans tous ces cas idx_tup_readdevient supérieur à idx_tup_fetch.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.