การปรับการผสานแบบสลับให้เหมาะสมต่ําบนตาราง Delta

คําสั่ง Delta Lake MERGE ช่วยให้ผู้ใช้สามารถอัปเดตตาราง Delta ด้วยเงื่อนไขขั้นสูง ซึ่งสามารถอัปเดตข้อมูลจากตารางต้นทาง มุมมอง หรือ DataFrame ลงในตารางเป้าหมายโดยใช้ MERGE คําสั่ง อย่างไรก็ตาม อัลกอริทึมปัจจุบันไม่ได้ปรับให้เหมาะสมสําหรับการจัดการแถวที่ไม่ได้เปลี่ยนแปลง ด้วยการปรับการผสานแบบสลับให้เหมาะสมต่ํา แถวที่ไม่ได้เปลี่ยนแปลงจะถูกแยกออกจากการดําเนินการสลับราคาแพงที่จําเป็นสําหรับการอัปเดตแถวที่ตรงกัน

Note

การผสานแบบสลับต่ําจะพร้อมใช้งานและเปิดใช้งานตามค่าเริ่มต้นในรันไทม์ Fabric Spark ทั้งหมดเพื่อปรับปรุงประสิทธิภาพการทํางานของการดําเนินการ MERGE อย่างมาก

ทําไมเราต้องการการผสานแบบสลับต่ํา

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

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

ประโยชน์ของการผสานแบบสลับต่ํา

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

วิธีการเปิดใช้งานและปิดใช้งานการผสานแบบ Shuffle ต่ํา

การผสานแบบสลับต่ําจะเปิดใช้งานตามค่าเริ่มต้นเป็นการกําหนดค่าเซสชัน Spark:

SET spark.microsoft.delta.merge.lowShuffle.enabled = TRUE