ความแตกต่างระหว่าง 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_readidx_tup_fetch

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.