หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
รูปแบบตาราง Lakehouse และ Delta Lake เป็นศูนย์กลางของ Microsoft Fabric การปรับตารางเดลต้าให้เหมาะสมอยู่เสมอเป็นกุญแจสําคัญในประสิทธิภาพและประสิทธิภาพด้านต้นทุนสําหรับปริมาณงานการวิเคราะห์
บทความนี้ช่วยให้คุณตัดสินใจได้ว่าจะใช้ลําดับ V เมื่อใด และแสดงรูปแบบการกําหนดค่าและการบํารุงรักษาหลักสําหรับตาราง Delta
ใช้บทความนี้เพื่อ:
- เข้าใจว่าลําดับ V เปลี่ยนแปลงอะไรและช่วยได้เมื่อไหร่
- เข้าใจว่าลําดับ Z และ V เสริมกันอย่างไร
- เลือกระดับการควบคุมที่เหมาะสม: เซสชัน คุณสมบัติตาราง หรือการดําเนินการเขียน
- ใช้รูปแบบการบํารุงรักษาตารางเดลต้าในบริบทรันไทม์ Spark ที่เหมาะสม
สําหรับคําแนะนําข้ามภาระงานเกี่ยวกับการใช้ V-order ตามสถานการณ์การใช้ ดูที่ การบํารุงรักษาและเพิ่มประสิทธิภาพตารางงานข้ามภาระงาน
ลําดับ V คืออะไร?
V-order คือการปรับแต่งเวลาการเขียนสําหรับไฟล์ Parquet ที่สามารถปรับปรุงประสิทธิภาพการสืบค้นด้านล่างข้ามเอนจิน Fabric
ข้อมูลโดยย่อ:
- จุดที่ช่วยได้มากที่สุด: รูปแบบที่อ่านหนัก เช่น แดชบอร์ด การวิเคราะห์เชิงโต้ตอบ และการสแกนซ้ํา
- มันช่วยได้อย่างไร: จัดระเบียบเค้าโครง Parquet ใหม่ (ตัวอย่างเช่น การกระจายกลุ่มแถว การเข้ารหัส และการบีบอัด) เพื่อปรับปรุงประสิทธิภาพการอ่าน
- การแลกเปลี่ยนทั่วไป: การเขียนอาจใช้เวลานานกว่า (โดยเฉลี่ยประมาณ 15%) ในขณะที่การอ่านสามารถปรับปรุงได้อย่างมีนัยสําคัญขึ้นอยู่กับปริมาณงาน
- ความเข้ากันได้ของเครื่องยนต์: ไฟล์ยังคงสอดคล้องกับ Parquet แบบโอเพ่นซอร์ส และคุณสมบัติของเดลต้า เช่น Z-Order ยังคงเข้ากันได้
- ขอบเขต: ลําดับ V คือระดับไฟล์ การทํางานของเดลต้า เช่น การบดอัด สุญญากาศ และการเดินทางข้ามเวลาสามารถใช้ได้
การควบคุมการเขียนแบบ V-order
V-order ใช้เพื่อปรับแต่งการจัดวางไฟล์ Parquet ให้มีประสิทธิภาพการสืบค้นที่รวดเร็วขึ้น โดยเฉพาะในสถานการณ์ที่มีการอ่านข้อมูลจํานวนมาก ใน Fabric การเรียงลําดับ V จะถูกปิดใช้งานโดยค่าเริ่มต้นสําหรับพื้นที่ทํางานที่สร้างใหม่ทั้งหมดเพื่อเพิ่มประสิทธิภาพสําหรับงานวิศวกรรมข้อมูลที่มีการเขียนจํานวนมาก
พฤติกรรม V-order ใน Apache Spark ถูกควบคุมผ่านการตั้งค่าดังต่อไปนี้:
| การกำหนดค่า | ค่าตามค่าเริ่มต้น | คำอธิบาย |
|---|---|---|
spark.sql.parquet.vorder.default |
false |
ควบคุมการเขียนลําดับ V ในระดับเซสชัน ตั้งค่าเป็น false ตามค่าเริ่มต้นในพื้นที่ทํางาน Fabric ใหม่ |
TBLPROPERTIES("delta.parquet.vorder.enabled") |
ยกเลิกการตั้งค่า | ควบคุมพฤติกรรม V-order เริ่มต้นที่ระดับตาราง |
ตัวเลือกตัวเขียน DataFrame: parquet.vorder.enabled |
ยกเลิกการตั้งค่า | ใช้ควบคุมลําดับ V ในระดับการเขียน |
ใช้คําสั่งต่อไปนี้เพื่อเปิดหรือแทนที่การเขียนแบบ V-order ตามความจําเป็นสําหรับสถานการณ์ของคุณ
V-order จะถูกปิดใช้งานโดยค่าเริ่มต้นในพื้นที่ทํางาน Fabric ใหม่ (spark.sql.parquet.vorder.default=false) เพื่อปรับปรุงประสิทธิภาพการเขียนสําหรับกระบวนการนําเข้าและการแปลง
สําหรับงานที่ต้องอ่านมาก เช่น การสืบค้นแบบโต้ตอบหรือแดชบอร์ด ให้เปิดใช้งาน V-order โดยตั้งค่าspark.sql.parquet.vorder.defaultเป็นtrue คุณยังสามารถสลับไปยัง readHeavyforSpark โปรไฟล์ทรัพยากร ซึ่งจะ ReadHeavy เปิดใช้งาน V-order โดยอัตโนมัติเพื่อประสิทธิภาพที่เน้นการอ่าน
ในรันไทม์ Fabric 1.3 และใหม่กว่า การตั้งค่าจะถูก spark.sql.parquet.vorder.enable ลบออก เนื่องจาก V-order สามารถนําไปใช้โดยอัตโนมัติระหว่างการปรับแต่ง Delta ด้วย OPTIMIZE, คุณไม่จําเป็นต้องใช้การตั้งค่าเก่านี้ หากย้ายข้อมูลจากรันไทม์เวอร์ชันก่อนหน้า ให้นําการตั้งค่านี้ออกจากโค้ด
ตรวจสอบการกําหนดค่า V-order ในเซสชัน Apache Spark
ใช้คําสั่งเหล่านี้เพื่อยืนยันค่าเซสชันปัจจุบันก่อนที่คุณจะเปลี่ยนแปลง
%%sql
SET spark.sql.parquet.vorder.default
ปิดการเขียนแบบ V-order ในเซสชัน Apache Spark
ใช้คําสั่งเหล่านี้เมื่อปริมาณงานของคุณเขียนมาก และคุณต้องการการนําเข้าหรือการเขียนการแปลงที่เร็วขึ้น
%%sql
SET spark.sql.parquet.vorder.default=FALSE
เปิดใช้งานการเขียนแบบ V-order ในเซสชัน Apache Spark
เมื่อคุณเปิดใช้งาน V-order ในระดับเซสชัน การเขียน Parquet ทั้งหมดในเซสชันนั้นจะใช้ลําดับ V รวมถึงตาราง Parquet ที่ไม่ใช่ Delta และตาราง Delta แม้ว่าparquet.vorder.enabledจะตั้งค่าเป็นfalse
%%sql
SET spark.sql.parquet.vorder.default=TRUE
ควบคุมลําดับ V โดยใช้คุณสมบัติของตาราง Delta
ส่วนนี้ใช้ Spark SQL เท่านั้น เนื่องจากคุณสมบัติตารางถูกกําหนดผ่าน SQL DDL และ ALTER TABLE คําสั่ง
ใช้คุณสมบัติของตารางเมื่อคุณต้องการค่าเริ่มต้นระดับตารางที่ใช้กับเซสชันต่างๆ
เปิดใช้งานคุณสมบัติตาราง V-order ระหว่างการสร้างตาราง:
%%sql
CREATE TABLE person (id INT, name STRING, age INT) USING parquet TBLPROPERTIES("delta.parquet.vorder.enabled" = "true");
เมื่อคุณสมบัติของตารางถูกตั้งค่าเป็น true, INSERT, UPDATE, และ MERGE จะใช้ลําดับ V ในขณะเขียน การตั้งค่าระดับเซสชันและระดับการเขียนยังคงมีความสําคัญ ดังนั้นการเขียนยังสามารถใช้ V-order ได้แม้TBLPROPERTIESจะตั้งค่าเป็นfalse
เปิดหรือปิด V-order โดยการเปลี่ยนแปลงคุณสมบัติของตาราง:
%%sql
ALTER TABLE person SET TBLPROPERTIES("delta.parquet.vorder.enabled" = "true");
ALTER TABLE person SET TBLPROPERTIES("delta.parquet.vorder.enabled" = "false");
ALTER TABLE person UNSET TBLPROPERTIES("delta.parquet.vorder.enabled");
หลังจากที่คุณเปิดหรือปิด V-order โดยใช้คุณสมบัติของตารางแล้ว จะมีผลกระทบเฉพาะการเขียนในอนาคตลงในตารางเท่านั้น ไฟล์ Parquet เก็บลําดับที่ใช้เมื่อถูกสร้างขึ้น หากต้องการเปลี่ยนโครงสร้างทางกายภาพปัจจุบันเพื่อใช้หรือลบลําดับ V ให้อ่าน การบีบอัดตาราง
การควบคุมลําดับ V โดยตรงในการเขียน
ส่วนนี้ใช้ PySpark เพื่อสาธิต API ตัวเขียน DataFrame รูปแบบเดียวกันนี้มีอยู่ใน Scala DataFrame API พร้อมตัวเลือกที่เทียบเท่า
ใช้ตัวเลือกระดับการเขียนเมื่อคุณต้องการการควบคุมต่อการดําเนินการแทนค่าเริ่มต้นทั้งเซสชันหรือทั้งตาราง
คําสั่งเขียน Apache Spark ทั้งหมดจะสืบทอดการตั้งค่าเซสชันเมื่อไม่ได้ถูกแทนที่อย่างชัดเจน ตัวอย่างต่อไปนี้เขียนโดยใช้ลําดับ V โดยสืบทอดการตั้งค่าเซสชัน
df_source.write\
.format("delta")\
.mode("append")\
.saveAsTable("myschema.mytable")
DeltaTable.createOrReplace(spark)\
.addColumn("id","INT")\
.addColumn("firstName","STRING")\
.addColumn("middleName","STRING")\
.addColumn("lastName","STRING",comment="surname")\
.addColumn("birthDate","TIMESTAMP")\
.location("Files/people")\
.execute()
df_source.write\
.format("delta")\
.mode("overwrite")\
.option("replaceWhere","start_date >= '2025-01-01' AND end_date <= '2025-01-31'")\
.saveAsTable("myschema.mytable")
ลําดับ V ใช้ได้เฉพาะกับไฟล์ที่ได้รับผลกระทบจากพรีดิเคตเท่านั้น
ในเซสชันที่ spark.sql.parquet.vorder.default unset หรือ set เป็น false, คําสั่งต่อไปนี้จะเขียนโดยใช้ลําดับ V:
df_source.write\
.format("delta")\
.mode("overwrite")\
.option("replaceWhere","start_date >= '2025-01-01' AND end_date <= '2025-01-31'")\
.option("parquet.vorder.enabled","true")\
.saveAsTable("myschema.mytable")
DeltaTable.createOrReplace(spark)\
.addColumn("id","INT")\
.addColumn("firstName","STRING")\
.addColumn("middleName","STRING")\
.addColumn("lastName","STRING",comment="surname")\
.addColumn("birthDate","TIMESTAMP")\
.option("parquet.vorder.enabled","true")\
.location("Files/people")\
.execute()