PostgreSQL จะสั่งซื้อเร็กคอร์ดใหม่บนดิสก์ได้อย่างไร (หลังคลัสเตอร์บนคีย์หลัก)


9

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

ตามที่ฉันเข้าใจแล้ว PostgreSQL จะไม่ทำการจัดกลุ่มโดยอัตโนมัติหลังจากการจัดกลุ่มเสร็จสิ้น (แม้ว่าจะจำได้ว่าจัดกลุ่มตามดัชนีที่แน่นอน) ตอนนี้เนื่องจากนี่คือคีย์หลักฉันสงสัยว่าคำสั่งเก็บข้อมูลจริงจะเป็นไปตามนั้นหรือไม่ (ซึ่งถ้าเป็นจริงฉันต้องการใช้เพื่อประโยชน์ของเราสำหรับการสืบค้นเฉพาะ)

โดยสรุป PostgreSQL จะสั่งซื้อเรกคอร์ดใหม่โดยเฉพาะอย่างยิ่งหลังจากการจัดกลุ่มได้อย่างไร

ขอบคุณมาก ๆ!

คำตอบ:


9

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

การดำเนินการ CLUSTER เรียงลำดับแถวทั้งหมด แต่ไม่มีผลต่อการเพิ่มแถวของ postgresql ดังนั้นข้อมูลจะไม่ถูกจัดเรียง อย่างไรก็ตาม postgresql จะเก็บสถิติซึ่งเป็นความสัมพันธ์ของแต่ละคอลัมน์ระหว่างคำสั่งของแถวในตารางและลำดับที่เรียงลำดับของคอลัมน์นั้น ดังนั้นผู้วางแผนยังคงปรับแผนของมันให้เหมาะสมตามสถิติที่บอกว่าตารางนั้นยังคงเรียงลำดับเป็นส่วนใหญ่แม้ว่าบางแถวจะถูกเพิ่มหลังจากการดำเนินการของคลัสเตอร์ (หรือถูกย้ายโดยการอัพเดต)

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