หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
ไฟล์ที่มีขนาดเหมาะสมมีความสําคัญต่อประสิทธิภาพการสืบค้น การใช้ทรัพยากร และการจัดการข้อมูลเมตา ไฟล์ขนาดเล็กจะเพิ่มค่าใช้จ่ายของงานและการดําเนินการข้อมูลเมตา ในขณะที่ไฟล์ขนาดใหญ่อาจใช้ประโยชน์จากการขนานและ I/O ที่เบ้ได้น้อยเกินไป Delta Lake ใช้ข้อมูลเมตาของไฟล์สําหรับการตัดแต่งพาร์ติชันและการข้ามข้อมูล ดังนั้นการกําหนดเป้าหมายขนาดไฟล์ที่เหมาะสมจึงช่วยให้อ่าน เขียน และบํารุงรักษาได้อย่างมีประสิทธิภาพ
ส่วนต่อไปนี้แสดงวิธีใช้คุณลักษณะการปรับแต่งขนาดไฟล์ต่างๆ เพื่อให้ได้ประสิทธิภาพสําหรับตารางเดลต้าของคุณ
การดําเนินการเค้าโครงข้อมูลที่ปรับได้
ปรับ
OPTIMIZEคําสั่งจะเขียนไฟล์ขนาดเล็กใหม่เป็นไฟล์ขนาดใหญ่เพื่อปรับปรุงเค้าโครงของข้อมูลในตารางเดลต้า สําหรับรายละเอียดเพิ่มเติม รวมถึงข้อมูลการปรับขนาดไฟล์ ให้ตรวจสอบเอกสารประกอบคําสั่ง OPTIMIZE
การบดอัดอัตโนมัติ
การบดอัดอัตโนมัติจะประเมินความสมบูรณ์ของพาร์ติชันโดยอัตโนมัติหลังจากการดําเนินการเขียนแต่ละครั้ง เมื่อตรวจพบการกระจายตัวของไฟล์มากเกินไป (ไฟล์ขนาดเล็กมากเกินไป) ภายในพาร์ติชัน จะทริกเกอร์การดําเนินการแบบซิงโครนัส OPTIMIZE ทันทีหลังจากการเขียนถูกคอมมิตต์ โดยทั่วไปแล้ววิธีการที่ขับเคลื่อนโดยผู้เขียนในการบํารุงรักษาไฟล์จะเหมาะสมที่สุด เนื่องจากการบดอัดจะดําเนินการเมื่อพิจารณาโดยทางโปรแกรมว่าเป็นประโยชน์เท่านั้น สําหรับตัวเลือกการกําหนดค่าโดยละเอียดและข้อมูลเพิ่มเติม โปรดดูเอกสารประกอบการบดอัดอัตโนมัติ
เพิ่มประสิทธิภาพการเขียน
การเพิ่มประสิทธิภาพการเขียนจะช่วยลดค่าใช้จ่ายของไฟล์ขนาดเล็กโดยการทําการบีบอัดการเขียนล่วงหน้า (bin packing) ซึ่งสร้างไฟล์ที่ใหญ่ขึ้นน้อยลง วิธีการนี้จะสับเปลี่ยนข้อมูลในหน่วยความจําลงในถังขยะที่มีขนาดเหมาะสมที่สุดก่อนที่ Spark จะเขียนไฟล์ Parquet เพื่อเพิ่มศักยภาพในการสร้างไฟล์ที่มีขนาดเหมาะสมโดยไม่ต้องดําเนินการล้างข้อมูลหลังการเขียนทันที
ควรใช้การเขียนให้เหมาะสมอย่างระมัดระวัง เนื่องจากต้นทุนการคํานวณของการสับเปลี่ยนข้อมูลสามารถเพิ่มเวลาในการประมวลผลที่มากเกินไปและไม่จําเป็นให้กับสถานการณ์การเขียนที่เฉพาะเจาะจง การเพิ่มประสิทธิภาพการเขียนจะเป็นประโยชน์เมื่อการดําเนินการเขียนจะสร้างไฟล์ขนาดเล็กที่จะเป็นตัวเลือกสําหรับการบีบอัดในภายหลัง
การเพิ่มประสิทธิภาพการเขียนมักเป็นประโยชน์สําหรับ:
- ตารางที่มีการแบ่งพาร์ติชัน
- โต๊ะที่มีเม็ดมีดขนาดเล็กบ่อยครั้ง
- การดําเนินการที่มีแนวโน้มจะสัมผัสกับไฟล์จํานวนมาก (
MERGE,UPDATE, และDELETE)
สําหรับแอปพลิเคชันที่เลือกบนตารางเฉพาะ ให้ยกเลิกการตั้งค่าคอนฟิกเซสชันและเปิดใช้งานคุณสมบัติตารางทีละรายการ การยกเลิกการตั้งค่าการกําหนดค่าระดับเซสชันช่วยให้เซสชัน Spark สามารถเลื่อนไปยังแต่ละตารางว่าควรใช้การเขียนแบบปรับให้เหมาะสมหรือไม่
ยกเลิกการตั้งค่าการเขียนให้เหมาะสม
spark.conf.unset("spark.databricks.delta.optimizeWrite.enabled")เปิดใช้งานในแต่ละตาราง
ALTER TABLE dbo.table_name SET TBLPROPERTIES ('delta.autoOptimize.optimizeWrite' = 'true')
หากต้องการเปิดใช้งานการเขียนไปยังตารางที่แบ่งพาร์ติชันทั้งหมดในเซสชัน Spark ตรวจสอบให้แน่ใจว่าไม่ได้ตั้งค่าการกําหนดค่าเซสชัน แล้วเปิดใช้งานการกําหนดค่า spark.microsoft.delta.optimizeWrite.partitioned.enabledเซสชัน :
SET spark.microsoft.delta.optimizeWrite.partitioned.enabled = TRUE
ขนาดไฟล์เป้าหมายที่สร้างขึ้นจากการเขียนให้เหมาะสมสามารถปรับได้ผ่านการกําหนดค่าspark.databricks.delta.optimizeWrite.binSize
Note
ดู โพรไฟล์ทรัพยากร สําหรับการตั้งค่าการเขียนปรับให้เหมาะสมตามโพรไฟล์ทรัพยากร
การตั้งค่าขนาดไฟล์เป้าหมายอย่างสม่ําเสมอ
เพื่อหลีกเลี่ยงความจําเป็นในการตั้งค่าคอนฟิกเซสชันขนาดไฟล์เป้าหมายต่ําสุดและสูงสุดสําหรับการเพิ่มประสิทธิภาพ การกระชับอัตโนมัติ และเพิ่มประสิทธิภาพการเขียน Microsoft Fabric มีคุณสมบัติตาราง delta.targetFileSize เป็นวิธีการรวมการกําหนดค่าเค้าโครงข้อมูลที่เกี่ยวข้องทั้งหมดที่ระดับตาราง ค่าขนาดไฟล์เป้าหมายจะถูกป้อนเป็นสตริงไบต์ (ตัวอย่างเช่น 1073741824b, , 1048576k, 1024m) 1g เมื่อระบุไว้จะมีความสําคัญเหนือกว่าการกําหนดค่าเซสชันอื่น ๆ ทั้งหมดและขนาดไฟล์เป้าหมายที่ปรับเปลี่ยนได้
ALTER TABLE dbo.table_name
SET TBLPROPERTIES ('delta.targetFileSize' = '256m')
ขนาดไฟล์เป้าหมายที่ปรับเปลี่ยนได้
Microsoft Fabric ให้ขนาดไฟล์เป้าหมายที่ปรับเปลี่ยนได้เพื่อขจัดความซับซ้อนที่เกี่ยวข้องกับการปรับขนาดไฟล์เป้าหมายของตารางทั้งหมดในเซสชันหรือแต่ละตารางด้วยตนเองผ่าน delta.targetFileSize คุณสมบัติตาราง ขนาดไฟล์เป้าหมายที่ปรับเปลี่ยนได้ใช้ฮิวริสติกตารางเดลต้า เช่น ขนาดตาราง เพื่อประเมินขนาดไฟล์เป้าหมายในอุดมคติ และอัปเดตเป้าหมายโดยอัตโนมัติเมื่อเงื่อนไขเปลี่ยนแปลง เพื่อให้มั่นใจถึงประสิทธิภาพสูงสุดโดยไม่ต้องมีการแทรกแซงด้วยตนเองหรือค่าใช้จ่ายในการบํารุงรักษา
Note
แม้ว่าจะไม่ได้เปิดใช้งานตามค่าเริ่มต้น แต่ Microsoft แนะนําให้เปิดใช้งานการกําหนดค่าเซสชัน ขนาดไฟล์เป้าหมายที่ปรับเปลี่ยน ได้
เปิดใช้งานขนาดไฟล์เป้าหมายที่ปรับเปลี่ยนได้บนตารางที่สร้างหรือแก้ไขภายในเซสชัน Spark โดยการตั้งค่าการกําหนดค่าเซสชัน Spark ต่อไปนี้:
SET spark.microsoft.delta.targetFileSize.adaptive.enabled = TRUE
เมื่อเปิดใช้งาน ขนาดไฟล์เป้าหมายที่ปรับเปลี่ยนได้จะได้รับการประเมินและตั้งค่าในสถานการณ์ต่อไปนี้:
-
CREATE TABLE AS SELECTและCREATE OR REPLACE TABLE AS SELECTการดําเนินงาน - เขียนทับการเขียนทับ (ตัวอย่างเช่น
DataFrame.write.mode("overwrite")หรือINSERT OVERWRITE) - เขียนในโหมด
ErrorIfExists,Append, หรือIgnoreเมื่อสร้างตารางใหม่ - เมื่อเริ่มต้นคําสั่ง
OPTIMIZE
เมื่อตั้งค่าแล้ว ขนาดที่เหมาะสมจะยังคงประเมินใหม่เมื่อเริ่มต้นการดําเนินการทุกครั้ง OPTIMIZE เพื่อให้แน่ใจว่าฮิวริสติกในปัจจุบันสะท้อนถึงการกระจายข้อมูลล่าสุดและการเติบโตของตาราง วิธีการที่ปรับเปลี่ยนได้นี้จะอัปเดตขนาดไฟล์เป้าหมายโดยอัตโนมัติเมื่อเวลาผ่านไป โดยไม่จําเป็นต้องปรับแต่งด้วยตนเองในขณะที่รักษาประสิทธิภาพการสืบค้นและการเขียนเมื่อข้อมูลของคุณเติบโตขึ้น เมื่อต้องการล็อกขนาดเฉพาะ เช่น ในกรณีการใช้งาน hyper-tuning หรือการทดสอบ คุณสามารถแทนที่การตั้งค่าที่ปรับเปลี่ยนได้โดยการตั้งค่าคุณสมบัติตารางที่ผู้ใช้กําหนดอย่าง delta.targetFileSize ชัดเจน
ค่าขนาดไฟล์เป้าหมายที่ปรับเปลี่ยนได้ที่ประเมินแล้วสามารถตรวจสอบได้โดยการเรียกใช้ DESCRIBE DETAIL หรือ DESCRIBE EXTENDED บนตาราง ขนาดที่ประเมินแบบปรับได้จะถูกเก็บเป็นสตริงไบต์ในคุณสมบัติ delta.targetFileSize.adaptiveตาราง ค่านี้ใช้เป็นการกําหนดค่าขนาดสูงสุดหรือขนาดเป้าหมายสําหรับการเพิ่มประสิทธิภาพ การบดอัดอัตโนมัติ และเพิ่มประสิทธิภาพการเขียน ค่าต่ําสุดที่ใช้โดยการตั้งค่าคอนฟิกที่เกี่ยวข้องจะคํานวณเป็นครึ่งหนึ่งของdelta.targetFileSize.adaptive
ขนาดไฟล์เป้าหมายที่ปรับเปลี่ยนได้สามารถกําหนดค่าเพิ่มเติมได้ผ่านการกําหนดค่าเซสชัน Spark ต่อไปนี้:
| ทรัพย์สิน | คำอธิบาย | ค่าตามค่าเริ่มต้น | การกําหนดค่าเซสชัน |
|---|---|---|---|
| ขนาดไฟล์ขั้นต่ํา | ระบุขนาดไฟล์ต่ําสุด (ขอบเขตล่าง) เป็นสตริงไบต์ที่ขนาดไฟล์เป้าหมายที่ปรับเปลี่ยนได้ใช้เมื่อประเมิน ต้องมีขนาดระหว่าง 128 MB ถึง 1 GB | 128 นาที | spark.microsoft.delta.targetFileSize.adaptive.minFileSize |
| max ขนาดไฟล์ | ระบุขนาดไฟล์สูงสุด (ขอบเขตบน) เป็นสตริงไบต์ที่ขนาดไฟล์เป้าหมายที่ปรับเปลี่ยนได้ใช้เมื่อประเมิน ต้องมีขนาดระหว่าง 128 MB ถึง 1 GB | 1024 นาที | spark.microsoft.delta.targetFileSize.adaptive.maxFileSize |
| stopAtMax ขนาด | เมื่อ trueหยุดการประเมินขนาดเพิ่มเติมเมื่อขนาดไฟล์เป้าหมายที่คํานวณถึงค่า maxFileSizeลดค่าใช้จ่ายในการประเมินใดๆ บนตารางที่มีขนาดใหญ่มาก |
จริง | spark.microsoft.delta.targetFileSize.adaptive.stopAtMaxSize |
Note
เมื่อ stopAtMaxSize เปิดใช้งาน (ค่าเริ่มต้น) ขนาดเป้าหมายที่ปรับเปลี่ยนได้จะยังคงคงที่ที่ค่าสูงสุดเมื่อถึงแล้ว เพื่อหลีกเลี่ยงการคํานวณเพิ่มเติม ถ้าตารางของคุณอาจหดตัวหลังจากการเติบโต ให้ตั้งค่าคุณสมบัติ false นี้เป็น เพื่อให้สามารถคํานวณใหม่ได้ต่ํากว่าขีดจํากัดสูงสุด
แผนภูมิต่อไปนี้แสดงความสัมพันธ์ระหว่างขนาดโต๊ะและขนาดไฟล์ปาร์เก้ที่เหมาะสมที่สุด สําหรับตารางที่ต่ํากว่า 10 GB รันไทม์ Fabric Spark จะประเมินขนาดไฟล์เป้าหมายเป็น 128 MB เมื่อขนาดตารางเพิ่มขึ้น ขนาดไฟล์เป้าหมายจะปรับขนาดเป็นเส้นตรง โดยสูงถึง 1 GB สําหรับตารางที่มีขนาดเกิน 10 TB
การเริ่มต้นด้วยขนาดเล็กที่ 128MB แล้วปรับขนาดไฟล์ปาร์เก้เมื่อโต๊ะมีขนาดเพิ่มขึ้นมีประโยชน์แบบเรียงซ้อน:
ปรับปรุงการข้ามไฟล์เดลต้า: ไฟล์ที่มีขนาดเหมาะสมรองรับการจัดกลุ่มและการข้ามข้อมูลที่เหมาะสม ตารางขนาดเล็กที่มีไฟล์ 128MB แทนที่จะเป็นไฟล์ 1GB ช่วยให้ข้ามไฟล์ได้มากขึ้น 8 เท่า
ลดค่าใช้จ่ายในการอัปเดต:
MERGEและUPDATEการดําเนินการจะเขียนเฉพาะไฟล์ที่ได้รับผลกระทบเท่านั้น ไฟล์ที่มีขนาดเหมาะสมจะลดจํานวนไฟล์ที่สัมผัสต่อการดําเนินการ ซึ่งช่วยลดปริมาณข้อมูลที่เขียนใหม่ เมื่อเปิดใช้งานเวกเตอร์การลบ ขนาดไฟล์ที่เหมาะสมจะกลายเป็นสิ่งสําคัญ: หลุมฝังศพระดับแถวในไฟล์ขนาดใหญ่ส่งผลให้มีค่าใช้จ่ายในการล้างข้อมูลจํานวนมากในระหว่างการดําเนินการบดอัดหรือการล้างข้อมูลความขนานที่ปรับให้เหมาะสม: ไฟล์ที่มีขนาดเหมาะสมช่วยให้ Spark บรรลุความขนานของงานในอุดมคติ ไฟล์ขนาดเล็กมากเกินไปครอบงําตัวกําหนดตารางเวลา ไฟล์ขนาดใหญ่น้อยเกินไปที่ใช้ประโยชน์จากพูล Spark ของคุณน้อยเกินไป การปรับขนาดที่เหมาะสมจะเพิ่มปริมาณงานทั้งการอ่านและเขียนให้สูงสุด
ขนาดไฟล์เป้าหมายที่ปรับเปลี่ยนได้สามารถปรับปรุงประสิทธิภาพการบดอัดได้ถึง 30-60% และส่งมอบการสืบค้นและการเขียนได้เร็วขึ้นเมื่อเลือกขนาดไฟล์ที่เหมาะสมกว่าค่าเริ่มต้น หากการประเมินแบบปรับเปลี่ยนได้ให้ขนาดเท่ากับการกําหนดค่าเซสชัน Spark เริ่มต้น จะไม่มีการปรับปรุงประสิทธิภาพที่คาดหวัง
สําคัญ
เพื่อหลีกเลี่ยงการขยายการเขียน ซึ่งไฟล์ที่กระชับไว้แล้วจะถูกเขียนใหม่เมื่อขนาดไฟล์เป้าหมายที่ปรับเปลี่ยนได้เพิ่มขึ้นเมื่อตารางของคุณเติบโตขึ้น ให้เปิดใช้งานเป้าหมายการบีบอัดระดับไฟล์ คุณลักษณะนี้ป้องกันไม่ให้ไฟล์ที่กระชับภายใต้ขนาดเป้าหมายที่ปรับเปลี่ยนได้ก่อนหน้านี้จากการถูกกระชับใหม่โดยไม่จําเป็น สําหรับข้อมูลเพิ่มเติม โปรดดูเอกสารประกอบเกี่ยวกับเป้าหมายการบีบอัดระดับไฟล์
สรุปแนวทางปฏิบัติที่ดีที่สุด
-
เปิดใช้งานการบดอัดอัตโนมัติ สําหรับไปป์ไลน์การนําเข้าที่มีการเขียนขนาดเล็กบ่อยครั้ง (การสตรีมหรือไมโครแบทช์) เพื่อหลีกเลี่ยงการตั้งเวลาด้วยตนเองและเพื่อให้ไฟล์ถูกกระชับโดยอัตโนมัติ
- สําหรับรูปแบบการเขียนอื่นๆ อาจเป็นประโยชน์ในการเปิดใช้งานเพื่อเป็นการประกันการสะสมไฟล์ขนาดเล็ก แต่ให้ชั่งน้ําหนักว่าวัตถุประสงค์ระดับบริการการประมวลผลข้อมูลของคุณทนต่อเวลาในการประมวลผลที่พุ่งสูงขึ้นเป็นระยะหรือไม่
- เปิดใช้งานขนาดไฟล์เป้าหมายที่ปรับเปลี่ยนได้ เพื่อขจัดการคาดเดาเกี่ยวกับขนาดไฟล์เป้าหมายที่เหมาะสมที่สุด
- ใช้ Optimize Write ในเส้นทางการนําเข้าที่มีการควบคุม (ชุดงานที่สามารถทนต่อการสับเปลี่ยน สถานการณ์การแบ่งพาร์ติชัน หรือการเขียนขนาดเล็กบ่อยครั้ง) เพื่อลดการสร้างไฟล์ขนาดเล็กและต้นทุนการบํารุงรักษาดาวน์สตรีม การบดอัดก่อนเขียน (เพิ่มประสิทธิภาพการเขียน) มีแนวโน้มที่จะมีค่าใช้จ่ายน้อยกว่าการบดอัดหลังการเขียน (ปรับให้เหมาะสม)
- กําหนดเวลา การดําเนินการแบบเต็มตาราง
OPTIMIZEระหว่างหน้าต่างที่เงียบสงบ เมื่อคุณต้องเขียนพาร์ติชันจํานวนมากใหม่หรือเรียกใช้ Z-Order - เปิดใช้งาน การเพิ่มประสิทธิภาพอย่างรวดเร็ว เพื่อลดการขยายการเขียนและทําให้
OPTIMIZEidempotent มากขึ้น (ดู การเพิ่มประสิทธิภาพอย่างรวดเร็ว) - ใช้
delta.targetFileSizeหรือควรปรับขนาดไฟล์เป้าหมายที่ปรับเปลี่ยนได้เพื่อให้ค่าขนาดไฟล์เป้าหมายสอดคล้องกันในฟีเจอร์เค้าโครงข้อมูลและเซสชัน Spark - เปิดใช้งาน เป้าหมายการบีบอัดระดับไฟล์ เพื่อป้องกันการขยายการเขียนเมื่อตารางมีขนาดเพิ่มขึ้นและใช้ขนาดไฟล์เป้าหมายที่ใหญ่ขึ้น