หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
เช่นเดียวกับระบบไฟล์และฐานข้อมูลเชิงสัมพันธ์ ข้อมูลจะกระจัดกระจายเมื่อเวลาผ่านไป เว้นแต่จะได้รับการจัดการอย่างใกล้ชิด ซึ่งนําไปสู่ต้นทุนการประมวลผลที่มากเกินไปในการอ่านข้อมูล ทะเลสาบเดลต้าก็ไม่มีข้อยกเว้น ไฟล์ข้อมูลควรเขียนใหม่เป็นระยะๆ ให้เป็นเค้าโครงที่เหมาะสมที่สุด เพื่อลดต้นทุนการดําเนินงานของแต่ละไฟล์ ปรับปรุงการบีบอัดข้อมูล และเพิ่มประสิทธิภาพการขนานของเครื่องอ่าน คําสั่งนี้ OPTIMIZE จัดการกับความท้าทายนี้: จัดกลุ่มไฟล์ขนาดเล็กภายในพาร์ติชันลงในถังขยะที่กําหนดเป้าหมายขนาดไฟล์ ที่เหมาะสม และเขียนใหม่ไปยังที่เก็บข้อมูล ผลลัพธ์ที่ได้คือข้อมูลเดียวกันถูกกระชับเป็นไฟล์น้อยลง
วิธีการบดอัด
Microsoft Fabric มีหลายวิธีในการรักษาขนาดไฟล์ที่เหมาะสมที่สุดในตารางเดลต้า:
OPTIMIZE สั่ง
คําสั่งนี้เป็น OPTIMIZE การดําเนินการพื้นฐานในการกระชับตารางเดลต้า มันเขียนไฟล์ขนาดเล็กใหม่เป็นไฟล์ขนาดใหญ่เพื่อปรับปรุงเค้าโครงข้อมูลในตารางเดลต้า
OPTIMIZE dbo.table_name
| ทรัพย์สิน | คำอธิบาย | ค่าพื้นฐาน | การกําหนดค่าเซสชัน |
|---|---|---|---|
| ขนาดไฟล์ขั้นต่ํา | ไฟล์ที่มีขนาดเล็กกว่าเกณฑ์นี้จะถูกจัดกลุ่มเข้าด้วยกันและเขียนใหม่เป็นไฟล์ขนาดใหญ่ | 1073741824 (1 ก.) | spark.databricks.delta.optimize.min ขนาดไฟล์ |
| max ขนาดไฟล์ | ขนาดไฟล์เป้าหมายที่สร้างโดย OPTIMIZE คําสั่ง |
1073741824 (1 กรัม) | spark.databricks.delta.optimize.max ขนาดไฟล์ |
สําคัญ
ในขณะที่ OPTIMIZE เป็นการดําเนินการ idempotent (หมายความว่าการเรียกใช้สองครั้งติดต่อกันจะไม่เขียนข้อมูลใหม่) การใช้ a minFileSize ที่ใหญ่เกินไปเมื่อเทียบกับขนาดตารางเดลต้าอาจทําให้เกิดการขยายการเขียน ตัวอย่างเช่น ถ้าคุณ minFileSize ถูกตั้งค่าเป็น 1 GB และคุณมีแฟ้ม 900 MB ในตารางของคุณ แฟ้ม 900 MB ที่มีขนาดสมเหตุสมผลจะถูกเขียนใหม่เมื่อ OPTIMIZE เรียกใช้หลังจากเขียนแฟ้มขนาดเล็ก 1 KB ลงในตารางของคุณ สําหรับคําแนะนําเกี่ยวกับวิธีจัดการขนาดไฟล์โดยอัตโนมัติ โปรดดู เอกสารประกอบขนาดไฟล์เป้าหมายที่ปรับเปลี่ยนได้
OPTIMIZE ด้วย Z-Order
เมื่อ ZORDER BY ระบุส่วนคําสั่ง ให้ OPTIMIZE เขียนไฟล์ที่ใช้งานอยู่ทั้งหมดใหม่เพื่อให้แถวที่มีค่าคล้ายกันสําหรับคอลัมน์ลําดับ z อยู่ในไฟล์เดียวกัน ซึ่งช่วยปรับปรุงประสิทธิภาพของการข้ามไฟล์สําหรับแบบสอบถามที่กรองในคอลัมน์เหล่านั้น ใช้ Z-Order เมื่อ:
- คิวรีของคุณมักจะกรองคอลัมน์ตั้งแต่สองคอลัมน์ขึ้นไปพร้อมกัน (เช่น วันที่ + customer_id) และ
- เพรดิเคตเหล่านั้นได้รับการคัดเลือกมากพอที่การข้ามระดับไฟล์จะลดจํานวนไฟล์ที่สแกน
OPTIMIZE dbo.table_name ZORDER BY (column1, column2)
OPTIMIZE ด้วย V-Order
ส่วนคําสั่งส่งผลให้ VORDER ไฟล์ที่มีขอบเขตสําหรับการบดอัดมีการใช้การเพิ่มประสิทธิภาพ V-Order สําหรับข้อมูลเพิ่มเติมเกี่ยวกับ V-Order โปรดดู เอกสารโดยละเอียด
OPTIMIZE dbo.table_name VORDER
OPTIMIZE ด้วยการจัดกลุ่มของเหลว
การจัดกลุ่มของเหลวถูกระบุเป็นตัวเลือกตาราง ดู เปิดใช้งานการจัดกลุ่ม Liquid สําหรับรายละเอียด เมื่อเปิดใช้งานการจัดกลุ่ม Liquid ให้ OPTIMIZE ทําการเขียนใหม่ทางกายภาพที่ใช้นโยบายการจัดกลุ่ม
สําคัญ
ข้อมูลจะถูกจัดคลัสเตอร์เมื่อ OPTIMIZE เรียกใช้บนตารางที่เปิดใช้งานคลัสเตอร์ Liquid เท่านั้น การดําเนินการเขียนปกติจะไม่จัดกลุ่มข้อมูล การมีกลยุทธ์การบดอัด เช่น การใช้การบดอัดอัตโนมัติหรือการจัดกําหนดการงานที่ปรับให้เหมาะสมด้วยตนเองเป็นสิ่งสําคัญเพื่อให้แน่ใจว่าสามารถรับรู้ประโยชน์ของข้อมูลคลัสเตอร์ (นั่นคือ การข้ามไฟล์เดลต้าที่ได้รับการปรับปรุง)
เพิ่มประสิทธิภาพอย่างรวดเร็ว
การเพิ่มประสิทธิภาพอย่างรวดเร็วจะวิเคราะห์ไฟล์ตารางเดลต้าอย่างชาญฉลาดและข้ามการดําเนินการบดอัดที่ไม่น่าจะปรับปรุงประสิทธิภาพได้อย่างมีความหมาย
แทนที่จะกระชับไฟล์อย่างสุ่มสี่สุ่มสี่สุ่มห้าเมื่อใดก็ตามที่มีไฟล์ขนาดเล็ก Fast Optimize จะประเมินว่าแต่ละถังผู้สมัคร (กลุ่มไฟล์ขนาดเล็ก) ตรงตามเป้าหมายการบีบอัดแนวทางปฏิบัติที่ดีที่สุดที่กําหนดค่าได้หรือไม่ Fast Optimize จะเรียกใช้การบีบอัดในถังขยะของไฟล์ก็ต่อเมื่อการรวมไฟล์มีแนวโน้มที่จะถึงขนาดเป้าหมายขั้นต่ําของคุณ หรือหากมีไฟล์ขนาดเล็กมากเกินไป มิฉะนั้น จะข้ามกลุ่มนั้นหรือลดจํานวนแฟ้มที่กระชับ
SET spark.microsoft.delta.optimize.fast.enabled = TRUE
การปรับให้เหมาะสมอย่างรวดเร็วสามารถปรับแต่งได้ตามความคาดหวังในการบดอัดของคุณ:
| ทรัพย์สิน | คำอธิบาย | ค่าพื้นฐาน | การกําหนดค่าเซสชัน |
|---|---|---|---|
| ไฟล์ minNum | จํานวนไฟล์ขนาดเล็กที่ต้องมีอยู่ในถังขยะเพื่อปรับให้เหมาะสมหากถังขยะมีข้อมูลไม่เพียงพอที่ประมาณการเพื่อสร้างไฟล์ที่กระชับ | 50 | spark.microsoft.delta.optimize.fast.minNumFiles |
| ปาร์เก้ค่าสัมประสิทธิ์ | คูณด้วยขนาดไฟล์ต่ําสุดของบริบทที่ปรับให้เหมาะสมเพื่อกําหนดจํานวนขั้นต่ําของข้อมูลไฟล์ขนาดเล็กที่ต้องมีอยู่ในช่องเก็บข้อมูลสําหรับช่องเก็บที่จะรวมอยู่ในขอบเขตของการบดอัด | 1.3 | spark.microsoft.delta.optimize.fast.parquet ค่าสัมประสิทธิ์ |
Note
parquetCoefficientผลลัพธ์ที่ขนาดเป้าหมายของถังขยะมีขนาดใหญ่กว่าขนาดไฟล์เป้าหมายต่ําสุดของบริบทการปรับให้เหมาะสม ค่าสัมประสิทธิ์นี้อธิบายถึงความเป็นจริงที่ว่าการรวมไฟล์ปาร์เก้ขนาดเล็กหลายไฟล์ส่งผลให้การบีบอัดดีขึ้นและทําให้ข้อมูลน้อยกว่าผลรวมของไฟล์ขนาดเล็ก ค่านี้สามารถเพิ่มให้ระมัดระวังมากขึ้นในความถี่ในการเพิ่มประสิทธิภาพความเร็วในการข้ามถังขยะ หรือลดลงเพื่อให้สามารถข้ามถังขยะได้มากขึ้น
วิธีการทำงาน
การเพิ่มประสิทธิภาพอย่างรวดเร็วจะแนะนําการตรวจสอบเพิ่มเติมก่อนที่ถังขยะจะถูกบดอัด สําหรับถังผู้สมัครแต่ละช่อง Fast Optimize จะประเมิน:
- จํานวนข้อมูลดิบโดยประมาณในถังขยะ (ผลรวมของไฟล์ขนาดเล็ก)
- การรวมไฟล์ขนาดเล็กเป็นการประเมินเพื่อสร้างไฟล์ที่ตรงตามขนาดเป้าหมายต่ําสุดที่กําหนดค่าไว้หรือไม่
- ช่องเก็บข้อมูลมีไฟล์ขนาดเล็กจํานวนขั้นต่ําที่กําหนดค่าไว้เป็นอย่างน้อยหรือไม่
การเพิ่มประสิทธิภาพอย่างรวดเร็วจะประเมินแต่ละช่องของไฟล์ขนาดเล็ก และกระชับเฉพาะไฟล์ขนาดเล็กที่มีแนวโน้มว่าจะถึงขนาดเป้าหมายต่ําสุดหรือเกินจํานวนไฟล์ขั้นต่ํา ถังขยะที่ไม่ตรงตามเกณฑ์เหล่านี้จะถูกข้ามหรือถูกบดอัดบางส่วน การข้ามถังขยะที่ไม่เหมาะสมจะช่วยลดการเขียนซ้ําที่ไม่จําเป็น ลดการขยายการเขียน และทําให้งาน OPTIMIZE มีความคล้ายคลึงกันมากขึ้น
Note
การใช้งานที่แน่นอนอาจมีการพัฒนาเมื่อเวลาผ่านไป
การเพิ่มประสิทธิภาพอย่างรวดเร็วอาจส่งผลให้มีการเขียนข้อมูลใหม่น้อยลงตลอดวงจรชีวิตของตารางเดลต้า ดังที่แสดงในแผนภาพต่อไปนี้ การเพิ่มประสิทธิภาพอย่างรวดเร็วข้ามการบดอัดถังขยะที่ไม่เหมาะสม ผลลัพธ์สุทธิคืองานที่เร็วขึ้นและสมบูรณ์แบบมากขึ้น OPTIMIZE และการขยายการเขียนน้อยลง
Note
เพื่อจุดประสงค์ในการอธิบายเท่านั้นไดอะแกรมข้างต้นถือว่าขนาดของไฟล์ที่เขียนจากการบดอัดคือผลรวมของขนาดของไฟล์ขนาดเล็ก นอกจากนี้ยังหมายถึง a parquetCoefficient ของ 1
Limitations
- ไม่สามารถใช้ได้กับการจัดกลุ่มของเหลวและการดําเนินการ Z-Order
- การเพิ่มประสิทธิภาพอย่างรวดเร็วจะไม่ปรับเปลี่ยนลักษณะการทํางานของการบดอัดอัตโนมัติ
เป้าหมายการบีบอัดระดับไฟล์
เพื่อหลีกเลี่ยงการเขียนใหม่ของข้อมูลที่ก่อนหน้านี้ถือว่าถูกกระชับ (ใหญ่พอ) ตามการเปลี่ยนแปลงเป้าหมาย spark.microsoft.delta.optimize.fileLevelTarget.enabled ขนาดไฟล์ต่ําสุดและสูงสุดของการบดอัด สามารถเปิดใช้งานเพื่อป้องกันการกระชับใหม่ของไฟล์ที่กระชับไว้แล้ว เมื่อเปิดใช้งาน ไฟล์จะไม่ถูกกระชับใหม่หากก่อนหน้านี้มีขนาดไฟล์เป้าหมายอย่างน้อยครึ่งหนึ่ง ณ เวลาที่ทําการบีบอัด การรักษาเป้าหมายระดับไฟล์จะช่วยลดการขยายการเขียนเนื่องจากขนาดเป้าหมายการบดอัดเปลี่ยนแปลงไปตามกาลเวลา (ตัวอย่างเช่น จากการประเมินขนาดไฟล์เป้าหมายที่ปรับเปลี่ยนได้และกําหนดเป้าหมายที่ใหญ่ขึ้น) ถ้าเปิดใช้งาน แท็กจะถูก OPTIMIZE_TARGET_SIZE เพิ่มลงในแฟ้มใหม่เมื่อเรียกใช้ OPTIMIZE หรือสําหรับการดําเนินการเขียนใดๆ ถ้า delta.targetFileSize มีคุณสมบัติ หรือ delta.targetFileSize.adaptive ตาราง ถูกตั้งค่า
Note
แม้ว่าจะไม่ได้เปิดใช้งานตามค่าเริ่มต้น แต่ Microsoft แนะนําให้เปิดใช้งาน เป้าหมายการบีบอัดระดับไฟล์ เพื่อจํากัดการขยายการเขียนที่อาจเกิดขึ้น
SET spark.microsoft.delta.optimize.fileLevelTarget.enabled = TRUE
การบดอัดอัตโนมัติ
การบดอัดอัตโนมัติจะประเมินความสมบูรณ์ของพาร์ติชันหลังจากการดําเนินการเขียนแต่ละครั้ง เมื่อตรวจพบการกระจายตัวของไฟล์มากเกินไป (ไฟล์ขนาดเล็กมากเกินไป) ภายในพาร์ติชัน จะทริกเกอร์การดําเนินการแบบซิงโครนัส OPTIMIZE ทันทีหลังจากการเขียนถูกคอมมิตต์ แนวทางการบํารุงรักษาไฟล์ที่ขับเคลื่อนโดยผู้เขียนนี้เหมาะสมที่สุด เนื่องจากการบดอัดจะดําเนินการเมื่อพิจารณาโดยทางโปรแกรมว่าเป็นประโยชน์เท่านั้น
ตั้งค่าที่ระดับเซสชันเพื่อเปิดใช้งานการบดอัดอัตโนมัติบนตารางใหม่:
SET spark.databricks.delta.autoCompact.enabled = TRUE
ตั้งค่าที่ระดับตารางให้เปิดใช้งานสําหรับตารางที่เลือกเท่านั้น:
CREATE TABLE dbo.table_name
TBLPROPERTIES ('delta.autoOptimize.autoCompact' = 'true')
ใช้ตัวเลือก DataFrameWriter เพื่อเปิดใช้งานบนตารางใหม่:
df.write.option('delta.autoOptimize.autoCompact', 'true').saveAsTable('dbo.table_name')
เปิดใช้งานบนตารางที่มีอยู่:
ALTER TABLE dbo.table_name
SET TBLPROPERTIES ('delta.autoOptimize.autoCompact' = 'true')
ลักษณะการทํางานของการบดอัดอัตโนมัติสามารถปรับได้ผ่านการกําหนดค่าเซสชัน Spark ต่อไปนี้:
| ทรัพย์สิน | คำอธิบาย | ค่าพื้นฐาน | การกําหนดค่าเซสชัน |
|---|---|---|---|
| max ขนาดไฟล์ | ขนาดไฟล์สูงสุดเป้าหมายเป็นไบต์สําหรับไฟล์ที่กระชับ | 134217728b (128 เมกะไบต์) | spark.databricks.delta.autoCompact.max ขนาดไฟล์ |
| ขนาดไฟล์ขั้นต่ํา | ขนาดไฟล์ต่ําสุดเป็นไบต์สําหรับไฟล์ที่จะถือว่ากระชับ สิ่งใดก็ตามที่ต่ํากว่าเกณฑ์นี้ถือเป็นการบดอัดและนับรวมใน minNumFiles เกณฑ์ |
ยกเลิกการตั้งค่า ตามค่าเริ่มต้น คํานวณเป็น 1/2 ของค่า maxFileSize เว้นแต่คุณจะตั้งค่าไว้อย่างชัดเจน |
spark.databricks.delta.autoCompact.min ขนาดไฟล์ |
| ไฟล์ minNum | จํานวนไฟล์ขั้นต่ําที่ต้องมีอยู่ภายใต้ minFileSize เกณฑ์สําหรับการบีบอัดอัตโนมัติที่จะทริกเกอร์ |
50 | spark.databricks.delta.autoCompact.minNumFiles |
Note
Microsoft แนะนําให้ใช้ การบดอัดอัตโนมัติ แทนการจัด OPTIMIZE กําหนดการงาน โดยทั่วไปการบดอัดอัตโนมัติจะมีประสิทธิภาพดีกว่างานการบดอัดตามกําหนดการที่เพิ่มประสิทธิภาพการอ่าน/เขียนสูงสุด และมักจะขจัดค่าใช้จ่ายในการบํารุงรักษาของการเข้ารหัส การจัดกําหนดการ และการปรับความถี่ของการเรียกใช้งานตามกําหนดการให้เหมาะสม แนะนําให้ใช้การบดอัดอัตโนมัติเมื่อวัตถุประสงค์ระดับบริการการประมวลผลข้อมูลทนต่อเวลาแฝงที่เพิ่มขึ้นจากการบดอัดอัตโนมัติที่ทริกเกอร์เมื่อจําเป็นต้องมีการบดอัด หากข้อกําหนดเวลาแฝงของข้อมูลเข้มงวด อาจมีประสิทธิภาพมากกว่าในการจัดกําหนดการเพิ่มประสิทธิภาพให้ทํางานบนพูล Spark แยกต่างหาก เพื่อไม่ให้การดําเนินการเขียนเห็นการเพิ่มขึ้นเป็นระยะเนื่องจากการดําเนินการบดอัดแบบซิงโครนัสถูกทริกเกอร์
สําคัญ
แม้ว่าการบดอัดจะเป็นกลยุทธ์ที่สําคัญในการใช้ แต่ก็ควรจับคู่อย่างเหมาะสมกับ การหลีกเลี่ยงการเขียนไฟล์ขนาดเล็ก ผ่านคุณสมบัติต่างๆ เช่น การเขียนให้เหมาะสม สําหรับข้อมูลเพิ่มเติม โปรดดูคําแนะนําเกี่ยวกับการเขียนให้เหมาะสม
การบํารุงรักษาโต๊ะเลคเฮ้าส์
ผู้ใช้สามารถเรียกใช้การดําเนินการบํารุงรักษาเฉพาะกิจ เช่น OPTIMIZE จาก Lakehouse UI สําหรับข้อมูลเพิ่มเติม โปรดดู การบํารุงรักษาโต๊ะเลคเฮาส์
สรุปแนวทางปฏิบัติที่ดีที่สุด
-
เปิดใช้งานการบดอัดอัตโนมัติ สําหรับไปป์ไลน์การนําเข้าที่มีการเขียนขนาดเล็กบ่อยครั้ง (การสตรีมหรือไมโครแบทช์) เพื่อหลีกเลี่ยงการตั้งเวลาด้วยตนเองและเก็บไฟล์ให้กระชับโดยอัตโนมัติ
- สําหรับรูปแบบการเขียนอื่นๆ อาจเป็นประโยชน์ในการเปิดใช้งานเพื่อเป็นการประกันการสะสมไฟล์ขนาดเล็ก แต่ให้ชั่งน้ําหนักว่าวัตถุประสงค์ระดับบริการการประมวลผลข้อมูลของคุณทนต่อเวลาในการประมวลผลที่พุ่งสูงขึ้นเป็นระยะหรือไม่
- กําหนดเวลา การดําเนินการแบบเต็มตาราง
OPTIMIZEระหว่างหน้าต่างที่เงียบสงบ เมื่อคุณต้องการเขียนพาร์ติชันจํานวนมากใหม่หรือเรียกใช้ Z-Order - เปิดใช้งาน การเพิ่มประสิทธิภาพอย่างรวดเร็ว เพื่อลดการขยายการเขียนและทําให้
OPTIMIZEidempotent มากขึ้น - เปิดใช้งาน เป้าหมายการบีบอัดระดับไฟล์ เพื่อป้องกันการขยายการเขียนเมื่อตารางมีขนาดเพิ่มขึ้นและใช้ขนาดไฟล์เป้าหมายที่ใหญ่ขึ้น
- โปรดจําไว้ว่าการบดอัดการเขียนล่วงหน้า (เพิ่มประสิทธิภาพการเขียน) มีค่าใช้จ่ายน้อยกว่าการบดอัดหลังการเขียน (ปรับให้เหมาะสม) ดู เพิ่มประสิทธิภาพเอกสาร การเขียน สําหรับแนวทางปฏิบัติที่ดีที่สุด