Різниця між idx_tup_read та idx_tup_fetch на Postgres


12

На Postgres 8.4, коли ви робите:

select * from pg_stat_all_indexes where relname = 'table_name';

Він повертає поля idx_tup_read та idx_tup_fetch, в чому різниця?

Відповіді:


13

Переглядаючи вихідний код представлення даних, ви побачите, що idx_tup_readце результат дзвінка pg_stat_get_tuples_returned()і idx_tup_fetchрезультат дзвінкаpg_stat_get_tuples_fetched()

Посібник описує дві функції так:

pg_stat_get_tuples_returned (oid)

Кількість рядків, прочитаних послідовним скануванням, коли аргументом є таблиця, або кількість записів індексу, повернутих, коли аргумент є індексом

pg_stat_get_tuples_fetched (oid)

Кількість рядків таблиці, отриманих за допомогою растрових сканувань, коли аргументом є таблиця, або рядки таблиці, отримані простими індексами сканування, використовуючи індекс, коли аргумент є індексом


1

З 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

таким чином, reads - це коли індекс повертає потрібну позицію рядка, а fetches - коли індекс повертає самі рядки таблиці.


0

На офіційній сторінці документації зазначено, що різниця між ними з'являється:

  1. коли індекс бере участь у скануванні растрових індексів
  2. якщо будь-які мертві чи ще не виконані рядки отримано за допомогою індексу
  3. якщо уникнути будь-яких накопичень купи за допомогою сканування лише з індексом
  4. коли доступ до індексу здійснюється за допомогою перевірок оптимізатора

У всіх цих випадках idx_tup_readстає більше, ніж idx_tup_fetch.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.