หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
ใช้ 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 ไว้สําหรับสถานการณ์ที่คุณต้องการควบคุมอย่างชัดเจนเมื่อแถวที่ถูกลบแบบชั่วคราวถูกลบออกทางกายภาพ
ตัวเลือกนี้มีประโยชน์เมื่อ:
- คุณมี ข้อกําหนดด้านการปฏิบัติตามกฎระเบียบ และต้องการให้ข้อมูลที่ถูกลบถูกลบออกตามกําหนดเวลาที่กําหนด
- คุณต้องการบังคับล้างไฟล์ที่ต่ํากว่าเกณฑ์
OPTIMIZE5% ที่ใช้
ลบข้อมูลที่ถูกลบอย่างถาวร
คําสั่งนี้จะ REORG TABLE ... APPLY (PURGE) เขียนไฟล์ข้อมูลที่ใช้งานอยู่ใหม่ แต่ไฟล์ที่ถูกแทนที่จะยังคงอยู่ใน OneLake เป็นไฟล์ที่ไม่ได้อ้างอิงจนกว่า VACUUM จะลบไฟล์เหล่านั้นออก เนื่องจากผู้ใช้ยังสามารถใช้การเดินทาง ข้ามเวลา หรือ กู้คืน เพื่อเข้าถึงระเบียนที่ถูกลบได้ หากต้องการลบข้อมูลที่ถูกลบอย่างถาวร ให้รัน VACUUM หลังจาก PURGE.
โดยค่าเริ่มต้น VACUUM จะเก็บไฟล์ที่ไม่ได้อ้างอิงไว้เป็นเวลาเจ็ดวัน หากคุณต้องการลบไฟล์ทันที ให้ปิดการตรวจสอบความปลอดภัยระยะเวลาการเก็บรักษาชั่วคราวสําหรับเซสชัน Spark ปัจจุบัน รัน VACUUM ด้วยการเก็บรักษาเป็นศูนย์ชั่วโมง แล้วเปิดใช้งานการตรวจสอบความปลอดภัยอีกครั้ง
Warning
การเก็บรักษาแบบ zero-hour จะลบไฟล์ที่ไม่ได้อ้างอิงทั้งหมดทันที มันสามารถรบกวนผู้อ่านหรือผู้เขียนที่ทํางานพร้อมกันและป้องกันการย้อนเวลาไปยังเวอร์ชันตารางที่พึ่งพาไฟล์เหล่านั้น ยืนยันว่าไม่มีการดําเนินการพร้อมกันใดที่ใช้ตารางนี้ก่อนดําเนินการต่อ
รันคําสั่งตามลําดับนี้:
REORG TABLE schema_name.table_name APPLY (PURGE);
SET spark.databricks.delta.retentionDurationCheck.enabled = false;
VACUUM schema_name.table_name RETAIN 0 HOURS;
SET spark.databricks.delta.retentionDurationCheck.enabled = true;
การเปลี่ยนแปลงการกําหนดค่าจะใช้ได้เฉพาะกับเซสชัน Spark ปัจจุบันเท่านั้น เปิดใช้งานการตรวจสอบความปลอดภัยอีกครั้งหลังจากทําความสะอาดทันที หากไม่จําเป็นต้องลบทันที ให้เปิดใช้งานการตรวจสอบความปลอดภัยและดําเนินการ VACUUM หลังจากระยะเวลาการเก็บรักษาที่กําหนด
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการเก็บรักษาและผลกระทบต่อการเดินทางข้ามเวลา โปรดดูตาราง VACUUM Delta
ตรวจทานไวยากรณ์
ใช้ตัวอย่างต่อไปนี้ 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 - ปฏิบัติตาม ขั้นตอนการทําความสะอาดความสอดคล้องเมื่อคุณ ต้องการให้ข้อมูลที่ถูกลบถูกลบออกจาก OneLake อย่างถาวร
- ใช้
WHEREเพรดิเคตเพื่อกําหนดเป้าหมายพาร์ติชันเฉพาะเมื่อคุณไม่จําเป็นต้องเขียนตารางแบบเต็มใหม่ - ใช้
UPGRADE UNIFORMเมื่อคุณต้องการเครื่องอ่าน Iceberg แต่วางแผนสําหรับข้อมูลเมตาเพิ่มเติมที่ UniForm เก็บรักษาไว้ - ปฏิบัติ
REORGและเป็นOPTIMIZEการดําเนินการบํารุงรักษาเสริม ไม่ใช่การดําเนินการที่เปลี่ยนได้