Sự khác biệt giữa idx_tup_read và idx_tup_fetch trên Postgres


11

Trên Postgres 8.4 khi bạn làm:

select * from pg_stat_all_indexes where relname = 'table_name';

Nó trả về các trường idx_tup_read và idx_tup_fetch, sự khác biệt là gì?

Câu trả lời:


12

Khi nhìn vào mã nguồn của chế độ xem, thì bạn sẽ thấy đó idx_tup_readlà kết quả của cuộc gọi pg_stat_get_tuples_returned()idx_tup_fetchlà kết quả của cuộc gọipg_stat_get_tuples_fetched()

Hướng dẫn mô tả hai chức năng như sau:

pg_stat_get_tuples_returned (oid)

Số lượng hàng được đọc bởi quét liên tiếp khi đối số là bảng hoặc số mục nhập chỉ mục được trả về khi đối số là chỉ mục

pg_stat_get_tuples_fetched (oid)

Số lượng các hàng của bảng được tìm nạp bằng bitmap quét khi đối số là một bảng hoặc các hàng của bảng được tìm nạp bởi quét chỉ mục đơn giản bằng cách sử dụng chỉ mục khi đối số là một chỉ mục


1

Từ các tài liệu 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

vì vậy, reads là khi chỉ mục trả lại vị trí của hàng được yêu cầu và fetches là khi chỉ mục trả lại chính các hàng của bảng.


0

Trang tài liệu chính thức nói rằng sự khác biệt giữa chúng xuất hiện:

  1. khi chỉ mục được tham gia quét chỉ mục bitmap
  2. nếu bất kỳ hàng chết hoặc chưa cam kết nào được tìm nạp bằng chỉ mục
  3. nếu bất kỳ tìm nạp heap nào được tránh bằng cách quét chỉ mục
  4. khi chỉ mục được truy cập bằng các kiểm tra của trình tối ưu hóa

Trong tất cả các trường hợp idx_tup_readtrở nên lớn hơn idx_tup_fetch.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.