แชร์ผ่าน


ปรับขนาดของไฟล์ข้อมูลตารางเดลต้า

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

ส่วนต่อไปนี้แสดงวิธีใช้คุณลักษณะการปรับแต่งขนาดไฟล์ต่างๆ เพื่อให้ได้ประสิทธิภาพสําหรับตารางเดลต้าของคุณ

การดําเนินการเค้าโครงข้อมูลที่ปรับได้

ปรับ

OPTIMIZEคําสั่งจะเขียนไฟล์ขนาดเล็กใหม่เป็นไฟล์ขนาดใหญ่เพื่อปรับปรุงเค้าโครงของข้อมูลในตารางเดลต้า สําหรับรายละเอียดเพิ่มเติม รวมถึงข้อมูลการปรับขนาดไฟล์ ให้ตรวจสอบเอกสารประกอบคําสั่ง OPTIMIZE

การบดอัดอัตโนมัติ

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

เพิ่มประสิทธิภาพการเขียน

การเพิ่มประสิทธิภาพการเขียนจะช่วยลดค่าใช้จ่ายของไฟล์ขนาดเล็กโดยการทําการบีบอัดการเขียนล่วงหน้า (bin packing) ซึ่งสร้างไฟล์ที่ใหญ่ขึ้นน้อยลง วิธีการนี้จะสับเปลี่ยนข้อมูลในหน่วยความจําลงในถังขยะที่มีขนาดเหมาะสมที่สุดก่อนที่ Spark จะเขียนไฟล์ Parquet เพื่อเพิ่มศักยภาพในการสร้างไฟล์ที่มีขนาดเหมาะสมโดยไม่ต้องดําเนินการล้างข้อมูลหลังการเขียนทันที

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

สกรีนช็อตแสดงให้เห็นว่าการเพิ่มประสิทธิภาพการเขียนส่งผลให้มีการเขียนไฟล์น้อยลงอย่างไร

การเพิ่มประสิทธิภาพการเขียนมักเป็นประโยชน์สําหรับ:

  • ตารางที่มีการแบ่งพาร์ติชัน
  • โต๊ะที่มีเม็ดมีดขนาดเล็กบ่อยครั้ง
  • การดําเนินการที่มีแนวโน้มจะสัมผัสกับไฟล์จํานวนมาก (MERGE, UPDATE, และ DELETE)

สําหรับแอปพลิเคชันที่เลือกบนตารางเฉพาะ ให้ยกเลิกการตั้งค่าคอนฟิกเซสชันและเปิดใช้งานคุณสมบัติตารางทีละรายการ การยกเลิกการตั้งค่าการกําหนดค่าระดับเซสชันช่วยให้เซสชัน Spark สามารถเลื่อนไปยังแต่ละตารางว่าควรใช้การเขียนแบบปรับให้เหมาะสมหรือไม่

  1. ยกเลิกการตั้งค่าการเขียนให้เหมาะสม

    spark.conf.unset("spark.databricks.delta.optimizeWrite.enabled")
    
  2. เปิดใช้งานในแต่ละตาราง

    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
  • เปิดใช้งาน การเพิ่มประสิทธิภาพอย่างรวดเร็ว เพื่อลดการขยายการเขียนและทําให้ OPTIMIZE idempotent มากขึ้น (ดู การเพิ่มประสิทธิภาพอย่างรวดเร็ว)
  • ใช้delta.targetFileSizeหรือควรปรับขนาดไฟล์เป้าหมายที่ปรับเปลี่ยนได้เพื่อให้ค่าขนาดไฟล์เป้าหมายสอดคล้องกันในฟีเจอร์เค้าโครงข้อมูลและเซสชัน Spark
  • เปิดใช้งาน เป้าหมายการบีบอัดระดับไฟล์ เพื่อป้องกันการขยายการเขียนเมื่อตารางมีขนาดเพิ่มขึ้นและใช้ขนาดไฟล์เป้าหมายที่ใหญ่ขึ้น