На Postgres 8.4, когда вы делаете:
select * from pg_stat_all_indexes where relname = 'table_name';
Он возвращает поля idx_tup_read и idx_tup_fetch, в чем разница?
источник
На Postgres 8.4, когда вы делаете:
select * from pg_stat_all_indexes where relname = 'table_name';
Он возвращает поля idx_tup_read и idx_tup_fetch, в чем разница?
Если вы посмотрите на исходный код представления, то увидите, что 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)
Число строк таблицы, выбранных при растровом сканировании, когда аргумент является таблицей, или строк таблицы, выбранных при простом сканировании индекса с использованием индекса, когда аргумент является индексом
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
Итак, read
s - это когда индекс возвращает позицию требуемой строки, а fetch
es - когда индекс возвращает сами строки таблицы.
На официальной странице документации написано, что разница между ними появляется:
Во всех этих случаях idx_tup_read
становится больше, чем idx_tup_fetch
.