ScholarGate
ผู้ช่วย

วิธีการจัดทำดัชนีและการเข้าถึง

ดัชนีและวิธีการเข้าถึงเป็นโครงสร้างข้อมูลเสริม ซึ่งส่วนใหญ่เป็น B+-trees และดัชนีแฮช ที่ช่วยให้ฐานข้อมูลสามารถค้นหาทูเพิลที่ตรงกันได้โดยไม่ต้องสแกนทั้งตาราง ทำให้เกิดเส้นทางการเข้าถึงที่รวดเร็วซึ่งตัวปรับแต่งประสิทธิภาพ (optimizer) ใช้ประโยชน์

ค้นหาหัวข้อด้วย PaperMindเร็ว ๆ นี้Find papers & topics
Tools & resources
ดาวน์โหลดสไลด์
Learn & explore
วิดีโอเร็ว ๆ นี้

Definition

ดัชนีคือโครงสร้างข้อมูลเสริมบนแอตทริบิวต์หนึ่งหรือหลายแอตทริบิวต์ของความสัมพันธ์ที่แมปค่าคีย์ไปยังตำแหน่งของทูเพิลที่ตรงกัน ทำให้สามารถเรียกค้นข้อมูลได้ในเวลาที่น้อยกว่าเชิงเส้นเมื่อเทียบกับขนาดตาราง; วิธีการเข้าถึงคือกลไกที่การสอบถามใช้ในการอ่านข้อมูล เช่น การสแกนทั้งหมดหรือการสแกนดัชนี

Scope

หัวข้อนี้ครอบคลุมโครงสร้างและแนวคิดเบื้องหลังเส้นทางการเข้าถึงข้อมูล: ความแตกต่างระหว่างดัชนีแบบคลัสเตอร์และไม่คลัสเตอร์, ดัชนีหลักและดัชนีรอง; B+-tree ในฐานะดัชนีเรียงลำดับที่สำคัญซึ่งรองรับการค้นหาแบบเท่ากันและแบบช่วง; ดัชนีแบบแฮชสำหรับการค้นหาแบบเท่ากัน; และบทบาทของดัชนีในการเลือก, การรวม (join), และการหลีกเลี่ยงการจัดเรียง (sort avoidance) นอกจากนี้ยังกล่าวถึงว่าการเลือกดัชนีส่งผลต่อต้นทุนการสอบถามและค่าใช้จ่ายในการอัปเดตอย่างไร โดยไม่รวมการเลือกแผนโดยรวมของตัวปรับแต่งประสิทธิภาพที่อิงตามต้นทุน ซึ่งเป็นหัวข้อแยกต่างหาก

Core questions

  • B+-tree รองรับการสอบถามทั้งแบบเท่ากันและแบบช่วงได้อย่างมีประสิทธิภาพได้อย่างไร?
  • ความแตกต่างระหว่างดัชนีแบบคลัสเตอร์และไม่คลัสเตอร์, ดัชนีหลักและดัชนีรองคืออะไร?
  • เมื่อใดที่ดัชนีแฮชดีกว่าดัชนีแบบต้นไม้?
  • ดัชนีช่วยเร่งความเร็วในการเลือก, การรวม (joins), และการเรียกค้นข้อมูลแบบเรียงลำดับได้อย่างไร?
  • ค่าใช้จ่ายในการบำรุงรักษาดัชนีภายใต้การแทรก, การอัปเดต, และการลบคืออะไร?

Key concepts

  • ดัชนี B+-tree
  • ดัชนีแฮช
  • ดัชนีแบบคลัสเตอร์เทียบกับไม่คลัสเตอร์
  • ดัชนีหลักและดัชนีรอง
  • ดัชนีแบบหนาแน่นและแบบเบาบาง
  • การค้นหาแบบช่วงและแบบเท่ากัน
  • การแฮชแบบขยายได้และแบบเชิงเส้น
  • ค่าใช้จ่ายในการบำรุงรักษาดัชนี

Key theories

ดัชนี B+-tree
B+-tree เป็นโครงสร้างต้นไม้ค้นหาแบบสมดุลที่มี fanout สูง ซึ่งเก็บคีย์ในลำดับที่จัดเรียงไว้ โดยมีการอ้างอิงข้อมูลทั้งหมดอยู่ในส่วนใบ; รองรับการสอบถามแบบเท่ากันและแบบช่วง และการสแกนแบบเรียงลำดับด้วย I/O แบบลอการิทึม และยังคงสมดุลภายใต้การแทรกและการลบ
ดัชนีแบบคลัสเตอร์เทียบกับไม่คลัสเตอร์
ดัชนีแบบคลัสเตอร์จะจัดเรียงแถวของตารางตามคีย์ดัชนีทางกายภาพ ทำให้การสแกนแบบช่วงมีประสิทธิภาพมาก ในขณะที่ดัชนีแบบไม่คลัสเตอร์ (รอง) จะชี้ไปยังไฟล์ที่ไม่ได้จัดเรียง ดังนั้นการเรียกค้นแถวที่ตรงกันจำนวนมากอาจมีค่าใช้จ่าย I/O หนึ่งครั้งต่อแถว
ดัชนีแฮช
ดัชนีแบบแฮชจะแมปคีย์ไปยังบัคเก็ตสำหรับการค้นหาแบบเท่ากันที่คาดว่าจะใช้เวลาคงที่ แต่ไม่รองรับการสอบถามแบบช่วง; แผนการแบบไดนามิก เช่น การแฮชแบบขยายได้และแบบเชิงเส้น ช่วยให้ดัชนีเหล่านี้เติบโตได้อย่างเหมาะสมกับข้อมูล

Clinical relevance

การจัดทำดัชนีเป็นกลไกที่ใช้บ่อยที่สุดในการปรับปรุงประสิทธิภาพของฐานข้อมูล: การเลือกดัชนีที่เหมาะสมสามารถเปลี่ยนการสแกนตารางทั้งหมดเป็นการค้นหาในระดับมิลลิวินาทีสำหรับการสอบถามแบบธุรกรรมและแบบวิเคราะห์ ในขณะที่การมีดัชนีมากเกินไปจะทำให้การอัปเดตช้าลง ดังนั้นการออกแบบดัชนีจึงเป็นการตัดสินใจที่เกิดขึ้นซ้ำๆ ในการดำเนินงานของระบบจริง

History

Bayer และ McCreight ได้นำเสนอ B-tree ในปี 1972 เพื่อรักษาดัชนีเรียงลำดับขนาดใหญ่บนดิสก์; B+-tree ซึ่งเป็นรูปแบบหนึ่งที่เก็บข้อมูลทั้งหมดไว้ในส่วนใบ (leaves) ได้กลายเป็นดัชนีฐานข้อมูลมาตรฐาน ดังที่สำรวจในงาน 'Ubiquitous B-tree' ของ Comer ในปี 1979 วิธีการเข้าถึงแบบแฮชและแผนการแฮชแบบไดนามิกได้พัฒนาขึ้นพร้อมกัน และทั้งสองตระกูลยังคงเป็นแกนหลักของทุกเอนจินเชิงสัมพันธ์

Key figures

  • Rudolf Bayer
  • Edward McCreight
  • Douglas Comer

Related topics

Seminal works

  • bayer1972
  • comer1979
  • ramakrishnan2003

Frequently asked questions

ทำไมจึงใช้ B+-trees แทนที่จะเป็น binary search trees ในฐานข้อมูล?
ฐานข้อมูลเก็บข้อมูลบนดิสก์ ซึ่งค่าใช้จ่ายส่วนใหญ่มาจากการอ่านหน้าข้อมูล B+-trees มี fanout สูง ดังนั้นแต่ละโหนดจะเติมเต็มหน้าดิสก์และโครงสร้างต้นไม้จะตื้นมาก ทำให้ต้องใช้ I/O เพียงไม่กี่ครั้งในการเข้าถึงเรคคอร์ดใดๆ Binary tree จะลึกกว่ามากและต้องมีการเข้าถึงดิสก์มากกว่า
เมื่อใดที่ควรใช้ดัชนีแฮชแทน B+-tree?
ควรใช้ดัชนีแฮชเมื่อคุณต้องการเพียงการค้นหาแบบเท่ากัน (เช่น ค้นหาแถวที่มี id ที่กำหนด) และต้องการการเข้าถึงที่คาดว่าจะใช้เวลาคงที่ ควรใช้ B+-tree เมื่อคุณต้องการการสอบถามแบบช่วง, การสแกนแบบเรียงลำดับ, หรือการจับคู่คำนำหน้าด้วย เนื่องจากดัชนีแฮชไม่รักษาระดับการเรียงลำดับของคีย์และไม่สามารถตอบเงื่อนไขแบบช่วงได้อย่างมีประสิทธิภาพ

Methods for this concept

Related concepts