วิธีการกำหนดค่าใช้จ่าย / ผลประโยชน์ของการเพิ่มดัชนี?


10

ตามที่Craig Ringer :

แม้ว่าโดยทั่วไปจะเป็นความคิดที่ดีที่จะสร้างดัชนีใน (หรือรวมถึง) คอลัมน์คีย์ต่างประเทศอ้างอิงของคุณ แต่ก็ไม่จำเป็น แต่ละดัชนีคุณเพิ่มช้า DML การดำเนินงานลดลงเล็กน้อยเพื่อให้คุณจ่ายค่าใช้จ่ายการปฏิบัติงานในทุกINSERT, หรือUPDATE DELETEหากดัชนีนั้นไม่ค่อยได้ใช้อาจไม่คุ้มค่า

คุณจะทราบได้อย่างไรว่าผลประโยชน์ของการเพิ่มดัชนีเกินกว่าราคาหรือไม่

คุณโปรไฟล์หน่วยทดสอบก่อน / หลังเพิ่มดัชนีและตรวจสอบเพื่อเพิ่มประสิทธิภาพโดยรวมหรือไม่? หรือมีวิธีที่ดีกว่า


pg_stat_user_indexesช่วยแนะนำคุณเกี่ยวกับสิ่งนี้แสดงข้อมูลเกี่ยวกับการใช้ดัชนี ในการประเมินค่าใช้จ่ายในการบำรุงรักษาคุณสามารถดูกิจกรรมการเขียนตารางของคุณได้pg_stat_user_tablesแต่เนื่องจากความนิยมการอัปเดตทั้งหมดไม่จำเป็นต้องแตะที่ดัชนีดังนั้นคุณอาจประเมินค่าสูงไปเล็กน้อย
Craig Ringer

@ CraigRinger มันมีประโยชน์มาก ขอบคุณ!
Gili

ฉันพึ่งพา pgBadger เกือบพิเศษ และลำไส้ของฉัน
โคลิน 't ฮาร์ต

คำตอบ:


4

การใช้ดัชนีขึ้นอยู่กับโครงสร้างของข้อมูลของคุณและการเลือกข้อมูลของคุณ หากคุณทำแบบสอบถามที่คุณไม่ได้ใช้พวกเขาพวกเขามีราคาแพง หากคุณใช้อย่างมีประสิทธิภาพพวกเขาเป็นเครื่องมือที่ยอดเยี่ยม มีการวางแผนแบบสอบถามและการวิเคราะห์แบบสอบถามวางแผน ( EXPLAIN) เพียงแค่การวางแผนหรือการวางแผนและการดำเนินการของคำสั่ง ( EXPLAIN ANALYZE)

และมีหนังสือออนไลน์ที่ยอดเยี่ยม: ใช้ลุคดัชนีเกี่ยวกับการใช้ดัชนีที่แนะนำ


4
กฎของหัวแม่มือนั้นดี แต่ก็กว้างเกินไปในกรณีนี้ ฉันกำลังมองหาเครื่องมือ / การวัดที่เป็นรูปธรรมซึ่งจะแนะนำให้เพิ่ม / ลบดัชนีตามพฤติกรรมการใช้งานจริงของแอปพลิเคชันของฉัน
Gili

บางทีนี่อาจเป็นเครื่องมือที่คุณกำลังมองหา: enterprisedb.com/products-services-training/products/ …
Mladen Uzelac

1

เลือกกฎของหัวแม่มือและปฏิบัติตามพวกเขา ตัวอย่างเช่นฉันมักจะสร้างดัชนีในด้านการอ้างอิงของคีย์ต่างประเทศ

ตรวจสอบให้แน่ใจว่าคุณทดสอบประสิทธิภาพผลิตภัณฑ์ของคุณตามเกณฑ์ประสิทธิภาพตามความต้องการของผู้ใช้ ตัวอย่างเช่นระบบต้องจัดการโหลดที่เข้ามาของ 100 คำขอ POST ประเภท X ต่อนาที

หากคุณไม่สามารถปฏิบัติตามข้อกำหนดด้านประสิทธิภาพของคุณได้ให้ปรับแต่งแบบจำลองของคุณอาจผิดกฎของหัวแม่มือในกระบวนการนั้น

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