หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
ใช้คําสั่ง Delta Lake VACUUM เพื่อลบไฟล์ข้อมูลที่ไม่ได้อ้างอิงโดยตารางเดลต้าอีกต่อไปอย่างถาวร และเก่ากว่าเกณฑ์การเก็บข้อมูลของคุณ
ใน Fabric VACUUM ช่วยให้คุณทําความสะอาดไฟล์เก่าใน OneLake หลังจากการอัปเดต ลบ รวมไฟล์ และบีบอัด ลดการใช้พื้นที่เก็บข้อมูล ลบไฟล์ที่ล้าสมัยซึ่ง Fabric ไม่ต้องการอีกต่อไปสําหรับสถานะตารางที่ใช้งานอยู่ และเรียกคืนพื้นที่หลังจากการดําเนินการบํารุงรักษา เช่น OPTIMIZE
VACUUM เป็นไปตามแนวคิดหลักของ Delta Lake เดียวกันกับที่คุณอาจรู้จักจาก Delta Lake แบบโอเพนซอร์ส แต่คุณเรียกใช้ในประสบการณ์ Spark Fabric เช่น สมุดบันทึก ข้อกําหนดงาน Spark และ UI ของ Lakehouse Maintenance
สิ่งที่ VACUUM ลบออก
ตารางเดลต้าจะติดตามไฟล์ที่ประกอบเป็นสถานะตารางปัจจุบันในบันทึกเดลต้า เมื่อการดําเนินการเช่น UPDATE, DELETE, , MERGEเขียนทับการเขียนทับ หรือการบีบอัดแทนที่ไฟล์ Parquet ที่เก่ากว่าด้วยไฟล์ที่ใหม่กว่า ไฟล์เก่าอาจไม่ถูกอ้างอิง
VACUUM ลบไฟล์ที่ไม่ได้อ้างอิงเหล่านั้นก็ต่อเมื่อเงื่อนไขทั้งสองนี้เป็นจริง:
- แฟ้มจะไม่ถูกอ้างอิงโดยบันทึกเดลต้าอีกต่อไป
- ไฟล์เก่ากว่าเกณฑ์การเก็บรักษาที่กําหนดค่าไว้
เนื่องจาก VACUUM จะลบไฟล์ออกจาก OneLake อย่างถาวร ให้ใช้อย่างระมัดระวังเมื่อคุณยังต้องการตารางเวอร์ชันเก่า
เหตุใด VACUUM จึงมีความสําคัญ
เรียกใช้ VACUUM เมื่อคุณต้องการ:
- ลดต้นทุนการจัดเก็บโดยการลบไฟล์ที่ล้าสมัยออกจาก OneLake
- เรียกคืนพื้นที่หลังจากการอัปเดต ลบ และรวมการดําเนินการ
- ล้างไฟล์ก่อนการบีบอัดหลังจาก
OPTIMIZEสร้างไฟล์แทนที่ - ป้องกันไม่ให้ตารางการผลิตที่ทํางานเป็นเวลานานสะสมไฟล์ข้อมูลเก่าที่ไม่จําเป็น
VACUUM ไม่ได้ปรับปรุงประสิทธิภาพการสืบค้นด้วยตัวเองในลักษณะเดียวกับการบีบอัดหรือการเพิ่มประสิทธิภาพเค้าโครงแฟ้ม จุดประสงค์หลักคือการล้างที่เก็บข้อมูล
จะเรียกใช้ VACUUM ได้ที่ไหน
VACUUM เป็นคําสั่ง Spark ใน Fabric เรียกใช้ในสถานที่ที่ใช้เอ็นจิ้น Spark เช่น:
- โน้ตบุ๊คผ้า
- ข้อกําหนดงาน Spark
- UI การบํารุงรักษา เลคเฮาส์และเวิร์กโฟลว์การบํารุงรักษาตามไปป์ไลน์
อย่ารัน VACUUM ในปลายทาง SQL analytics หรือ warehouse SQL editor ประสบการณ์เหล่านั้นไม่รองรับคําสั่งการบํารุงรักษา Spark Delta
หากคุณต้องการเวิร์กโฟลว์ตามพอร์ทัล โปรดดู การบํารุงรักษาตาราง Lakehouse
Note
ในสมุดบันทึก ให้เรียกใช้ตัวอย่าง SQL ในเซลล์ Spark SQL ตัวอย่าง Python ในเซลล์ PySpark และตัวอย่าง Scala ในเซลล์ Scala
ตัวอย่างไวยากรณ์
ใช้ตัวอย่างต่อไปนี้เมื่อคุณเรียกใช้ VACUUM ใน Fabric
ดูดฝุ่นโต๊ะด้วยการเก็บรักษาเริ่มต้น
VACUUM schema_name.table_name
ดูดฝุ่นโต๊ะด้วยเกณฑ์การเก็บรักษาแบบกําหนดเอง
VACUUM schema_name.table_name RETAIN 168 HOURS
ดูตัวอย่างไฟล์ด้วย DRY RUN
ใช้เพื่อ DRY RUN แสดงรายการไฟล์ที่จะถูกลบโดยไม่ต้องลบจริง
VACUUM schema_name.table_name DRY RUN
คุณยังสามารถรวมRETAINและDRY RUN
VACUUM schema_name.table_name RETAIN 168 HOURS DRY RUN
ดูดฝุ่นในโหมด LITE
VACUUM LITE เป็นทางเลือกที่เร็วกว่าที่ใช้เฉพาะบันทึกธุรกรรมเดลต้าเพื่อระบุไฟล์ที่ไม่ได้อ้างอิง แทนที่จะแสดงรายการทุกไฟล์ในไดเร็กทอรีตาราง วิธีการนี้เร็วกว่าอย่างมากสําหรับตารางขนาดใหญ่ที่มีไฟล์จํานวนมาก
VACUUM schema_name.table_name LITE
VACUUM schema_name.table_name LITE RETAIN 168 HOURS
VACUUM LITE ระบุไฟล์ที่จะลบโดยการอ่านบันทึกเดลต้าแทนที่จะดําเนินการรายการไดเรกทอรีแบบเต็ม เร็วกว่า แต่ต้องใช้ประวัติบันทึกเพียงพอเพื่อระบุว่าไฟล์ใดไม่มีการอ้างอิง หากบันทึกเดลต้าถูกตัดแต่งเกินกว่าที่ LITE โหมดต้องการ DELTA_CANNOT_VACUUM_LITE จะมีข้อยกเว้นเกิดขึ้นในกรณีนั้นให้ถอยกลับไปใช้มาตรฐาน VACUUM (โหมดเต็ม)
Note
VACUUM LITE ได้รับการสนับสนุนใน Fabric Spark runtime 2.0 (Delta 4.1) หรือใหม่กว่า ตรวจสอบว่าเวอร์ชันรันไทม์ Fabric ของคุณรองรับคุณลักษณะนี้
ดูดฝุ่นด้วยตารางสินค้าคงคลัง
สําหรับตารางขนาดใหญ่มากที่แม้แต่รายการไดเรกทอรีแบบเต็มเริ่มต้น VACUUM ก็ช้าคุณสามารถระบุสินค้าคงคลังของไฟล์ที่คํานวณไว้ล่วงหน้าได้ แทนที่จะแสดงรายการไดเร็กทอรีตารางในขณะรันไทม์ ให้ VACUUM อ่านเส้นทางไฟล์จากสินค้าคงคลังที่คุณระบุ
VACUUM schema_name.table_name USING INVENTORY inventory_table_name
VACUUM schema_name.table_name USING INVENTORY (SELECT * FROM inventory_table_name WHERE path LIKE 'abfss://%')
ตารางสินค้าคงคลัง (หรือแบบสอบถาม) ต้องมี Schema ต่อไปนี้:
| คอลัมน์ | ชนิด | คำอธิบาย |
|---|---|---|
path |
สตริง | URI ไฟล์ที่ผ่านการรับรองอย่างสมบูรณ์ |
length |
จำนวนเต็ม | ขนาดไฟล์เป็นไบต์ |
isDir |
บูลีน | รายการเป็นไดเร็กทอรีหรือไม่ |
modificationTime |
จำนวนเต็ม | เวลาแก้ไขไฟล์ล่าสุดเป็นมิลลิวินาทีตั้งแต่ยุค |
คุณสามารถเติมข้อมูลตารางสินค้าคงคลังจากเมตาดาต้าของไฟล์ OneLake รายงานสินค้าคงคลังของบัญชีที่เก็บข้อมูล หรืองาน Spark แบบกําหนดเองที่แสดงรายการไดเรกทอรีตารางตามกําหนดการ สิ่งนี้จะแยกขั้นตอนการแสดงรายการไฟล์ที่มีราคาแพงออกจาก VACUUM การดําเนินการเอง
ระยะเวลาการเก็บรักษาเริ่มต้น
หากไม่ได้ระบุช่วงเวลาการเก็บรักษา ให้ใช้ VACUUM ระยะเวลาการเก็บรักษาเริ่มต้น 7 วัน ซึ่งก็คือ 168 ชั่วโมง
ค่าเริ่มต้นนั้นช่วยให้ผู้อ่าน ผู้เขียน และแบบสอบถามการเดินทางข้ามเวลาที่ใช้งานอยู่มีหน้าต่างที่ปลอดภัยยิ่งขึ้นก่อนที่ไฟล์เก่าจะถูกลบออก
การตรวจสอบความปลอดภัยสําหรับระยะเวลาการเก็บรักษาสั้น ๆ
ทะเลสาบเดลต้ามีการตรวจสอบความปลอดภัยในการเก็บรักษาที่ควบคุมโดยspark.databricks.delta.retentionDurationCheck.enabled
หากคุณพยายามใช้ระยะเวลาการเก็บรักษาที่สั้นกว่า 7 วัน การตรวจสอบความปลอดภัยนี้จะเตือนคุณ เว้นแต่คุณจะปิดใช้งานการตรวจสอบในการกําหนดค่า Spark ของคุณอย่างชัดเจน
ใช้ความระมัดระวังเป็นพิเศษก่อนที่คุณจะปิดใช้งานการป้องกันนี้ หน้าต่างการเก็บรักษาสั้น ๆ สามารถลบไฟล์ที่ปริมาณงานที่เกิดขึ้นพร้อมกันหรือสถานการณ์การกู้คืนยังคงต้องการ
ตัวอย่างเช่น คําสั่งเหล่านี้ขอระยะเวลาการเก็บรักษา 1 วัน:
VACUUM schema_name.table_name RETAIN 24 HOURS
หากสภาพแวดล้อมของคุณเปิดใช้งานการตรวจสอบความปลอดภัยไว้รันไทม์จะเตือนคุณเกี่ยวกับการตั้งค่าการเก็บรักษาที่ต่ํากว่าเจ็ดวัน
ทําความเข้าใจผลกระทบต่อการเดินทางข้ามเวลา
การเดินทางข้ามเวลาของ Delta Lake ช่วยให้คุณสามารถสืบค้นเวอร์ชันตารางที่เก่ากว่าได้ตราบเท่าที่ไฟล์ในอดีตที่จําเป็นยังคงมีอยู่
VACUUM ลบไฟล์ที่เก่ากว่ากรอบเวลาการเก็บรักษา ดังนั้นจึงลบไฟล์ข้อมูลที่จําเป็นสําหรับการเดินทางข้ามเวลานอกหน้าต่างนั้นด้วย หลังจากดูดฝุ่นไฟล์เหล่านั้นแล้ว คุณจะไม่สามารถสืบค้นเวอร์ชันเก่าเหล่านั้นได้อีกต่อไป
ก่อนที่คุณจะลดการเก็บรักษา ให้ตัดสินใจว่าปริมาณงาน การตรวจสอบ ขั้นตอนการแก้ไขข้อบกพร่อง และกระบวนการกู้คืนของคุณต้องการการเข้าถึงในอดีตมากน้อยเพียงใด สําหรับข้อมูลเพิ่มเติม ให้ดูที่ การเดินทางข้ามเวลา
ทําความเข้าใจผลกระทบต่อเวกเตอร์การลบ
เวกเตอร์การลบสามารถทําเครื่องหมายแถวว่าถูกลบโดยไม่ต้องเขียนไฟล์ข้อมูลที่ได้รับผลกระทบทั้งหมดใหม่ทันที แฟ้มที่ดูเก่าอาจยังคงเป็นส่วนหนึ่งของสถานะตารางที่ใช้งานอยู่
VACUUM ไม่ลบไฟล์ที่ยังคงอ้างอิงอยู่ รวมถึงไฟล์ที่ยังคงถูกต้องเนื่องจากข้อมูลเมตาของเวกเตอร์การลบยังคงชี้ไปที่ไฟล์เหล่านั้น ถ้าคุณใช้เวกเตอร์การลบและจัดระเบียบใหม่หรือปรับตารางให้เหมาะสมในภายหลัง แฟ้มที่ล้าสมัยมากขึ้นอาจมีสิทธิ์ใช้ VACUUM หลังจากการเปลี่ยนแปลงเหล่านั้นเสร็จสมบูรณ์
หากต้องการเขียนข้อมูลที่ได้รับผลกระทบจากเวกเตอร์การลบใหม่ทางกายภาพ โปรดดู ตารางเดลต้า REORG
ปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุด
ใช้แนวทางปฏิบัติเหล่านี้เมื่อคุณเรียกใช้ VACUUM ใน Fabric
- เรียกใช้
VACUUMหลังจากOPTIMIZEเพื่อลบไฟล์การบดอัดล่วงหน้าที่ไม่จําเป็นอีกต่อไป - อย่าตั้งค่าการเก็บรักษาไว้ต่ํากว่าเจ็ดวัน เว้นแต่คุณจะเข้าใจอย่างชัดเจนถึงผลกระทบต่อการเดินทางข้ามเวลา ผู้อ่าน นักเขียน และการฟื้นตัว
- จัดกําหนดการการดําเนินงานปกติ
VACUUMในไปป์ไลน์การผลิต เพื่อไม่ให้ไฟล์เก่าสะสมใน OneLake - ตัดสินใจเกี่ยวกับข้อกําหนดการเดินทางข้ามเวลาของคุณก่อนที่คุณจะลดระยะเวลาการเก็บรักษา
- ใช้
DRY RUNก่อนเมื่อคุณต้องการตรวจสอบว่าไฟล์ใดที่กําลังจะถูกลบออก
สําหรับคําแนะนําในการบํารุงรักษาทั่วทั้ง Fabric โปรดดู ภาพรวมการบํารุงรักษาตาราง และ การบํารุงรักษาโต๊ะเลคเฮาส์
ทําความเข้าใจสิ่งที่ VACUUM ไม่ได้ลบออก
VACUUM ลบไฟล์ข้อมูลที่ล้าสมัย แต่จะไม่ลบไฟล์บันทึกเดลต้าใน _delta_log โฟลเดอร์
การล้างข้อมูลบันทึกแบบเดลต้าจะเป็นไปตามจุดตรวจสอบและพฤติกรรมการเก็บรักษาบันทึก ซึ่งแยกจากVACUUM