Delta Lake tablolarını V-order ile optimize et

Lakehouse ve Delta Lake tablo biçimi Microsoft Fabric için merkezidir. Delta tablolarını en iyi duruma getirmek, analiz iş yükleri için performans ve maliyet verimliliği açısından önemlidir.

Bu makale, V-sırasını ne zaman kullanacağınızı belirlemenize yardımcı olur ve Delta tabloları için ana yapılandırma ve bakım desenlerini gösterir.

Aşağıdakiler için bu makaleyi kullanın:

  • V-derecesinin neyi değiştirdiğini ve ne zaman yardımcı olduğunu anlayın.
  • Z-Order ve V-Order'ın birbirini nasıl tamamladığını anlayın.
  • Doğru denetim düzeyini seçin: oturum, tablo özelliği veya yazma işlemi.
  • Delta tablosu bakım desenlerini doğru Spark çalışma zamanı bağlamında uygulayın.

Tüketim senaryolarına dayalı V-siparişi ne zaman uygulanacağına dair çapraz iş yükü rehberliği için bkz. Çapraz iş yükü tablosu bakımı ve optimizasyonu.

V-order nedir?

V-order, Parquet dosyaları için yazma zamanı optimizasyonudur ve Fabric motorları arasında aşağı akış sorgu performansını iyileştirebilir.

Bir bakışta:

  • En faydalı olduğu alanlar: Pano oluşturma, etkileşimli analiz ve yinelenen taramalar gibi çok okunan desenler.
  • Nasıl yardımcı olur: Okuma verimliliğini artırmak için Parquet düzenini (satır grubu dağılımı, kodlama ve sıkıştırma gibi) yeniden düzenler.
  • Tipik denge: Yazma işlemleri daha uzun sürebilir (genellikle ortalama 15%), okumalar ise iş yüküne bağlı olarak önemli ölçüde geliştirilebilir.
  • Altyapı uyumluluğu: Dosyalar açık kaynak Parquet uyumlu, Z-Order gibi Delta özellikleri de uyumlu kalır.
  • Kapsam: V-sıra dosya seviyesindedir. Sıkıştırma, vakum ve zaman yolculuğu gibi delta işlemleri onunla birlikte kullanılabilir.

Control V-order yazır

V-order, özellikle okuma ağırlıklı senaryolarda daha hızlı sorgu performansı için Parquet dosya düzenini optimize etmek için kullanılır. Fabric'te, yazma ağırlıklı veri mühendisliği iş yükleri için performansı optimize etmek amacıyla tüm yeni oluşturulan çalışma alanları için varsayılan olarak V-order devre dışı bırakılmıştır.

Apache Spark'ta V-order davranışı aşağıdaki konfigürasyonlarla kontrol edilir:

Yapılandırma Varsayılan Değer Açıklama
spark.sql.parquet.vorder.default false Oturum düzeyinde V-sıra yazımı kontrol eder. Yeni Doku çalışma alanlarında varsayılan olarak false ayarlanır.
TBLPROPERTIES("delta.parquet.vorder.enabled") Ayarı kaldır Tablo düzeyinde varsayılan V-sıra davranışını kontrol eder.
DataFrame yazıcı seçeneği: parquet.vorder.enabled Ayarı kaldır Yazma işlem seviyesinde V-düzenini kontrol etmek için kullanılır.

Senaryonuzda V-order yazımlarını etkinleştirmek veya geçersiz kılmak için aşağıdaki komutları kullanın.

V-order, benimseme ve dönüşüm boru hatlarında yazma performansını artırmak için yeni Fabric çalışma alanlarındaspark.sql.parquet.vorder.default=false varsayılan olarak devre dışı bırakılmıştır.

Etkileşimli sorgular veya dashboard gibi okuma ağırlıklı iş yükleri için, V-order'ı etkinleştirerek spark.sql.parquet.vorder.default .true Ayrıca readHeavyforSparkReadHeavy kaynak profillerine geçebilirsiniz, bu da okuma odaklı performans için otomatik olarak V-sırasını etkinleştirir.

Yapı çalışma zamanı 1.3 ve sonrası için spark.sql.parquet.vorder.enable ayarı kaldırıldı. Delta optimizasyonu sırasında V-order otomatik olarak uygulanabildiği OPTIMIZEiçin, bu eski ayara ihtiyacınız yok. Önceki çalışma zamanı sürümlerinden geçiş gerçekleştiriyorsanız bu ayarı kodunuzdan kaldırın.

Apache Spark oturumunda V-order konfigürasyonunu kontrol et

Geçerli oturum değerini değiştirmeden önce onaylamak için bu komutları kullanın.

%%sql 
SET spark.sql.parquet.vorder.default 

Apache Spark oturumunda V-order yazımını devre dışı bırak

İş yükünüz yazma ağırlıklı olduğunda ve daha hızlı alma veya dönüştürme yazma işlemleri istediğinizde bu komutları kullanın.

%%sql 
SET spark.sql.parquet.vorder.default=FALSE 

Apache Spark oturumunda V-order yazımını etkinleştir

V-sırasını oturum seviyesinde etkinleştirdiğinizde, o oturumdaki tüm Parquet yazımları, Delta olmayan Parquet tabloları ve Delta tabloları parquet.vorder.enabled dahil, açıkça olarak olarak ayarlanmış falseolsa bile V-order kullanır.

%%sql 
SET spark.sql.parquet.vorder.default=TRUE 

Delta tablo özellikleri kullanılarak kontrol V-derecesi

Bu bölümde Spark SQL yalnızca tablo özellikleri SQL DDL ve ALTER TABLE deyimleri aracılığıyla tanımlandığından kullanılır.

Oturumlar arasında geçerli olan bir tablo düzeyi varsayılanı istediğinizde tablo özelliklerini kullanın.

Tablo oluşturma sırasında V-order tablo özelliğini etkinleştirin:

%%sql 
CREATE TABLE person (id INT, name STRING, age INT) USING parquet TBLPROPERTIES("delta.parquet.vorder.enabled" = "true");

Tablo özelliği , true, INSERT, olarak ayarlandığında UPDATEve MERGE yazma zamanında V-sırasını uygular. Oturum seviyesi ve yazma seviyesi ayarları hâlâ önceliklidir, bu yüzden yazmalar V-sırasını kullanabilir, hatta TBLPROPERTIES ayarlandığında falsebile .

Tablo özelliğini değiştirerek V-sırasını etkinleştirin veya devre dışı bırakın:

%%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-sırasını tablo özelliklerini kullanarak etkinleştirip devre dışı bıraktıktan sonra, yalnızca tabloya ileride yazmalar etkilenir. Parquet dosyaları, oluşturulurken kullanılan sıralamayı korur. Mevcut fiziksel yapıyı V-sırasını uygulamak veya kaldırmak için Tablo sıkıştırmasını okuyun.

V-düzenini doğrudan yazma işlemlerinde kontrol etmek

Bu bölümde, DataFrame yazıcı API'sini göstermek için PySpark kullanılır. Aynı desen, eşdeğer seçeneklere sahip Scala DataFrame API'lerinde de kullanılabilir.

Oturum genelinde veya tablo genelinde varsayılan değerler yerine işlem başına denetime ihtiyacınız olduğunda yazma düzeyi seçeneklerini kullanın.

Tüm Apache Spark yazma komutları, açıkça geçersiz kılınmadığında oturum ayarını devralır. Aşağıdaki örnekler, oturum yapılandırmasını miras alarak V-sırası kullanılarak yazılır.

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-order yalnızca predikattan etkilenen dosyalar için geçerlidir.

Bir oturumda, spark.sql.parquet.vorder.default ayarlanmamış veya falseayarlanmışsa, aşağıdaki komutlar V-sırası kullanılarak yazılır:

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()