จัดระเบียบตารางเดลต้าใหม่ด้วย REORG

ใช้ REORG คําสั่งเมื่อคุณต้องการเขียนส่วนหนึ่งของตารางเดลต้าใหม่สําหรับเป้าหมายการบํารุงรักษาเฉพาะ ใน Fabric REORG จะจัดระเบียบเค้าโครงทางกายภาพของตารางใหม่โดยการเขียนไฟล์ข้อมูลใหม่หรืออัปเดตข้อมูลเมตาของตาราง โดยขึ้นอยู่กับตัวเลือกที่คุณเลือก

REORG แตกต่างจากการบีบอัดไฟล์ตามปกติ กําหนดเป้าหมายสถานการณ์ต่างๆ เช่น การลบแถวที่เวกเตอร์การลบทําเครื่องหมายว่าถูกลบ

REORG ทําอะไร

REORG TABLE เขียนสถานะตารางใหม่สําหรับการดําเนินการบํารุงรักษาที่กําหนดไว้

  • APPLY (PURGE) เขียนไฟล์ข้อมูลที่ได้รับผลกระทบใหม่เพื่อให้แถวที่ถูกลบแบบนุ่มนวลผ่านเวกเตอร์การลบจะถูกลบออกจากไฟล์ Parquet ที่อยู่เบื้องหลัง

ใช้ REORG เมื่อคุณต้องการผลลัพธ์การเขียนใหม่ที่เฉพาะเจาะจง ไม่ใช่แค่ไฟล์ที่เล็กลงหรือน้อยลง

ใช้ PURGE เพื่อลบแถวที่ถูกลบแบบชั่วคราว

เวกเตอร์การลบช่วยให้ Delta Lake ทําเครื่องหมายแถวว่าถูกลบโดยไม่ต้องเขียนไฟล์ Parquet ต้นฉบับใหม่ทันที ลักษณะการทํางานนั้นช่วยให้การดําเนินการลบมีประสิทธิภาพ แต่ข้อมูลแถวที่ถูกลบยังคงมีอยู่ในไฟล์ทางกายภาพจนกว่าคุณจะเขียนใหม่

เมื่อคุณเรียกใช้ REORG TABLE ... APPLY (PURGE) Fabric จะเขียนแฟ้มที่ได้รับผลกระทบใหม่ และเอาแถวที่ถูกลบแบบชั่วคราวออกจากแฟ้ม Parquet ที่ใช้งานอยู่ หลังจาก PURGE เสร็จสิ้นแถวที่ถูกลบเหล่านั้นจะหายไปจากไฟล์ที่เขียนใหม่

Note

PURGE โดยทั่วไปไม่จําเป็นต้องเป็นขั้นตอนการบํารุงรักษาแยกต่างหาก OPTIMIZE ล้างไฟล์โดยอัตโนมัติที่มีการอ้างอิงบันทึกมากกว่า 5% โดยเวกเตอร์การลบระหว่างการบีบอัด จอง PURGE ไว้สําหรับสถานการณ์ที่คุณต้องการควบคุมอย่างชัดเจนเมื่อแถวที่ถูกลบแบบชั่วคราวถูกลบออกทางกายภาพ

ตัวเลือกนี้มีประโยชน์เมื่อ:

  • คุณมีข้อกําหนดด้านการปฏิบัติตามข้อกําหนดหรือ GDPR และจําเป็นต้องลบข้อมูลที่ถูกลบออกตามกําหนดเวลาที่กําหนด
  • คุณต้องการบังคับล้างไฟล์ที่ต่ํากว่าเกณฑ์ OPTIMIZE 5% ที่ใช้

ตรวจทานไวยากรณ์

ใช้ตัวอย่างต่อไปนี้ amp ในสมุดบันทึก Fabric

ล้างแถวที่ถูกลบแบบชั่วคราวออกจากตาราง

REORG TABLE table_name APPLY (PURGE)

ล้างแถวที่ถูกลบแบบชั่วคราวสําหรับการจับคู่ข้อมูลเท่านั้น

REORG TABLE table_name WHERE predicate APPLY (PURGE)

ใช้ WHERE ส่วนคําสั่งเมื่อคุณต้องการกําหนดเป้าหมายพาร์ติชันเฉพาะหรือส่วนข้อมูลที่เล็กกว่า

REORG TABLE sales.orders
WHERE order_date = DATE '2026-05-01'
APPLY (PURGE)

เลือก REORG หรือ OPTIMIZE

REORG และ OPTIMIZE แก้ปัญหาต่างๆ

  • OPTIMIZE ทําการบดอัดถังขยะ มันรวมไฟล์ขนาดเล็กเป็นไฟล์ขนาดใหญ่เพื่อปรับปรุงประสิทธิภาพการสแกน
  • REORG ... APPLY (PURGE) ลบแถวที่เวกเตอร์การลบทําเครื่องหมายว่าลบแล้ว

คุณสามารถใช้ทั้งสองคําสั่งร่วมกันได้ ตัวอย่างเช่น คุณอาจเรียกใช้ REORG ... APPLY (PURGE) เพื่อลบข้อมูลที่ถูกลบออก จากนั้นเรียกใช้ OPTIMIZE เพื่อปรับปรุงเค้าโครงแฟ้ม

ทําความเข้าใจเวกเตอร์การลบ

เวกเตอร์การลบคือโครงสร้างข้อมูลเมตาที่ทําเครื่องหมายแถวว่าถูกลบโดยไม่ต้องเขียนไฟล์ Parquet ที่มีแถวเหล่านั้นใหม่ทันที ผู้อ่านให้เกียรติเวกเตอร์การลบ ดังนั้นแถวที่ถูกลบจะไม่ปรากฏในผลลัพธ์แบบสอบถาม แต่ไบต์จะยังคงอยู่ในที่เก็บข้อมูลจนกว่าจะมีการเขียนใหม่

REORG ... APPLY (PURGE) เป็นขั้นตอนที่ลบแถวเหล่านั้นออกจากไฟล์ Parquet ที่เขียนใหม่

เรียกใช้ REORG ใน Fabric

เรียกใช้ REORG จากประสบการณ์ที่ใช้ Spark ใน Fabric เช่น:

  • โน้ตบุ๊คผ้า
  • ข้อกําหนดงาน Spark

อย่าเรียกใช้ REORG จากตําแหน่งข้อมูลการวิเคราะห์ SQL REORG เป็นคําสั่งการบํารุงรักษา Spark SQL สําหรับตารางเดลต้า

ปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุด

  • เรียกใช้ PURGE เฉพาะเมื่อคุณมีความต้องการเฉพาะ เช่น ข้อกําหนดการปฏิบัติตามข้อกําหนด OPTIMIZEล้างไฟล์โดยอัตโนมัติที่มีการอ้างอิงบันทึกมากกว่า 5% โดยเวกเตอร์การลบ ดังนั้นการบํารุงรักษาตามปกติจึงไม่จําเป็นต้องมีขั้นตอนแยกต่างหากPURGE
  • เรียกใช้ PURGE ก่อน VACUUM เมื่อคุณต้องการลบข้อมูลที่ถูกลบออกตามข้อกําหนดหรือข้อกําหนดของ GDPR
  • ใช้ WHERE เพรดิเคตเพื่อกําหนดเป้าหมายพาร์ติชันเฉพาะเมื่อคุณไม่จําเป็นต้องเขียนตารางแบบเต็มใหม่
  • ใช้ UPGRADE UNIFORM เมื่อคุณต้องการเครื่องอ่าน Iceberg แต่วางแผนสําหรับข้อมูลเมตาเพิ่มเติมที่ UniForm เก็บรักษาไว้
  • ปฏิบัติ REORG และเป็น OPTIMIZE การดําเนินการบํารุงรักษาเสริม ไม่ใช่การดําเนินการที่เปลี่ยนได้