หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
การข้ามไฟล์เป็นการเพิ่มประสิทธิภาพการอ่านของ Delta Lake ที่ช่วยให้กลไก Spark หลีกเลี่ยงการสแกนไฟล์ข้อมูลที่ไม่สามารถมีแถวที่ตรงกันได้ เนื่องจากกลไกจัดการอ่านข้อมูลน้อยลง คิวรีจึงทํางานเร็วขึ้นและใช้ทรัพยากร I/O น้อยลง
การข้ามไฟล์ทํางานอย่างไร
ทุกครั้งที่มีการเขียนไฟล์ข้อมูลลงในตารางเดลต้า Delta Lake จะบันทึกสถิติคอลัมน์ต่อไฟล์ในบันทึกธุรกรรม สถิติเหล่านี้รวมถึง ค่าต่ําสุดค่าสูงสุด และ จํานวน Null สําหรับแต่ละคอลัมน์ที่จัดทําดัชนีในไฟล์นั้น
เมื่อคิวรีมีเพรดิเคตตัวกรอง กลไกจัดการจะเปรียบเทียบค่าเพรดิเคตกับช่วงต่ําสุด/สูงสุดที่จัดเก็บไว้สําหรับแต่ละไฟล์ ถ้าค่าเพรดิเคตอยู่นอกช่วงของแฟ้ม แฟ้มนั้นจะถูกข้ามไปทั้งหมด โดยไม่จําเป็นต้องเปิดหรือสแกนแฟ้มนั้น
ตัวอย่างเช่น พิจารณา sales ตารางที่แบ่งพาร์ติชันออกเป็นห้าแฟ้มข้อมูลตามช่วงวันที่:
| ไฟล์ | สถิติต่ําสุด/สูงสุด | ผลสําหรับ WHERE date = '2024-03-15' |
|---|---|---|
| ไฟล์ 1 | date [2024-01-01 .. 2024-02-28] |
ข้าม |
| ไฟล์ 2 | date [2024-03-01 .. 2024-03-31] |
อ่าน ✓ |
| ไฟล์ 3 | date [2024-04-01 .. 2024-05-31] |
ข้าม |
| ไฟล์ 4 | date [2024-06-01 .. 2024-07-31] |
ข้าม |
| ไฟล์ 5 | date [2024-08-01 .. 2024-09-30] |
ข้าม |
ในกรณีนี้ ระบบจะข้ามไฟล์ 4 ใน 5 ไฟล์ โดยสแกนข้อมูลน้อยลง 80% เนื่องจากช่วงต่ําสุด/สูงสุดไม่ทับซ้อนกับค่าตัวกรอง
สำคัญ
ชนิดข้อมูลของค่าเพรดิเคตต้องตรงกับชนิดคอลัมน์ ชนิดที่ไม่ตรงกันสามารถป้องกันไม่ให้กลไกจัดการใช้สถิติระดับไฟล์สําหรับการข้าม
การทำงานตามค่าเริ่มต้น
Delta Lake รวบรวมสถิติไฟล์โดยอัตโนมัติด้วยค่าเริ่มต้นต่อไปนี้:
- เฉพาะ 32 คอลัมน์แรก (ตามตําแหน่งลําดับ) เท่านั้นที่มีการรวบรวมสถิติ
- สถิติที่ติดตามต่อคอลัมน์ต่อไฟล์: จํานวนต่ําสุดสูงสุด และค่า ว่าง
- การรวบรวมสถิติในคอลัมน์สตริงยาวมีค่าใช้จ่ายสูงและเพิ่มค่าใช้จ่ายในการเขียน ดังนั้นการวางตําแหน่งจึงมีความสําคัญ
delta.dataSkippingNumIndexedColsคุณสมบัติตารางจะควบคุมขีดจํากัดของคอลัมน์ คอลัมน์ที่เกินเกณฑ์นั้นจะไม่ได้รับสถิติระดับไฟล์และไม่สามารถเข้าร่วมในการข้ามไฟล์ได้
ประเภทข้อมูลที่มีสิทธิ์
คอลัมน์บางชนิดไม่สนับสนุนสถิติระดับไฟล์ ดังนั้นการข้ามไฟล์ กลไกจัดการจะประเมินชนิดข้อมูลของแต่ละคอลัมน์เพื่อพิจารณาว่าสามารถรวบรวมสถิติต่ําสุด/สูงสุดได้หรือไม่
มีสิทธิ์เสมอ (ประเภทอะตอม)
-
NumericType(ByteType, , ,ShortTypeIntegerType,LongType, ,FloatType)DoubleTypeDecimalType DateTypeTimestampTypeTimestampNTZTypeStringType
มีสิทธิ์ตามเงื่อนไข
Note
ชนิดต่อไปนี้สามารถเปิดใช้งานในการเริ่มต้นรันไทม์ Fabric Spark 2.0 (เดลต้า 4.1)
-
VariantType: เมื่อspark.databricks.delta.variantShredding.collectVariantDataSkippingStatsเปิดใช้งาน -
ArrayType: เมื่อspark.microsoft.delta.skipping.complexTypes.enabledเปิดใช้งานและประเภทองค์ประกอบมีสิทธิ์ -
MapType: เมื่อspark.microsoft.delta.skipping.complexTypes.enabledเปิดใช้งาน และทั้งประเภทคีย์และค่ามีสิทธิ์
ไม่มีสิทธิ์
BinaryTypeBooleanType-
StructType(โดยรวม - ทุ่งใบไม้ภายในโครงสร้างจะได้รับการประเมินเป็นรายบุคคล) NullType
เพิ่มความครอบคลุมของคอลัมน์ให้สูงสุด
เพื่อให้ได้ประโยชน์สูงสุดจากการข้ามไฟล์ ให้ตรวจสอบให้แน่ใจว่าคอลัมน์ที่คุณกรองบ่อยที่สุดนั้นครอบคลุมโดยสถิติไฟล์
จัดตําแหน่งคอลัมน์ที่กรองบ่อยก่อน
วางคอลัมน์ที่ปรากฏบ่อย WHERE ที่สุดในส่วนคําสั่ง คีย์รวม และกรองเพรดิเคตในตําแหน่งลําดับ 32 ตําแหน่งแรกของ Schema ตาราง ย้ายคอลัมน์สตริงยาวหรือคอลัมน์ที่มีการเลือกต่ําเกินตําแหน่ง 32 เพื่อหลีกเลี่ยงการเสียค่าใช้จ่ายในการเขียนกับสถิติที่ไม่ค่อยช่วย
ALTER TABLE table_name ALTER COLUMN long_str_col AFTER last_indexed_col
เพิ่มจํานวนคอลัมน์ที่จัดทําดัชนี
หากตารางมีคอลัมน์มากกว่า 32 คอลัมน์ที่ได้รับประโยชน์จากสถิติ ให้เพิ่มขีดจํากัดเริ่มต้นดังนี้
ALTER TABLE table_name SET TBLPROPERTIES ('delta.dataSkippingNumIndexedCols' = '40')
Note
การเพิ่มจํานวนคอลัมน์ที่จัดทําดัชนีจะเพิ่มค่าใช้จ่ายในการเขียนสําหรับทุกไฟล์ข้อมูล เพิ่มค่านี้เฉพาะเมื่อคอลัมน์พิเศษถูกใช้บ่อยในเพรดิเคตตัวกรอง
ระบุคอลัมน์ที่แน่นอนสําหรับสถิติ
ใช้เพื่อ delta.dataSkippingStatsColumns ควบคุมอย่างชัดเจนว่าคอลัมน์ใดจะได้รับสถิติไฟล์ โดยไม่คํานึงถึงตําแหน่งลําดับ:
ALTER TABLE table_name SET TBLPROPERTIES ('delta.dataSkippingStatsColumns' = 'col1,col2')
เมื่อ delta.dataSkippingStatsColumns ตั้งค่า เฉพาะคอลัมน์ที่ระบุเท่านั้นที่ได้รับการรวบรวมสถิติ วิธีการนี้ช่วยให้คุณควบคุมการแลกเปลี่ยนระหว่างต้นทุนการเขียนและประโยชน์ในการอ่านได้อย่างละเอียด
รวมการข้ามไฟล์กับเค้าโครงข้อมูล
การข้ามไฟล์จะทํางานได้ดีที่สุดเมื่อค่าที่เกี่ยวข้องอยู่ในไฟล์เดียวกัน เทคนิคต่างๆ เช่น ZORDER BY การจัดกลุ่มของเหลวจะจัดระเบียบข้อมูลใหม่ทางกายภาพ เพื่อให้แถวที่มีค่าคอลัมน์คล้ายกันจบลงในไฟล์เดียวกัน การจัดเรียงค่าที่คล้ายกันจะกระชับช่วงต่ําสุด/สูงสุดต่อไฟล์ ซึ่งจะเพิ่มเปอร์เซ็นต์ของไฟล์ที่เอ็นจิ้นสามารถข้ามได้สําหรับตัวกรองที่กําหนด
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการเพิ่มประสิทธิภาพเค้าโครงข้อมูล โปรดดู การบดอัดตาราง การจัดกลุ่ม Liquid และ Z-Order