Aracılığıyla paylaş


Delta tablosu veri dosyalarının boyutunu ayarlama

Uygun şekilde boyutlandırılmış dosyalar sorgu performansı, kaynak kullanımı ve meta veri yönetimi için önemlidir. Daha küçük dosyalar görev ek yükünü ve meta veri işlemlerini artırırken, büyük dosyalar paralelliği az kullanabilir ve G/Ç'yi çarpıtabilir. Delta Lake bölüm ayıklama ve veri atlama için dosya meta verilerini kullanır, bu nedenle doğru dosya boyutunu hedeflemek verimli okuma, yazma ve bakım sağlar.

İpucu

Tüketim senaryosuna (SQL analytics uç noktası, Power BI Direct Lake, Spark) dayalı en iyi dosya boyutu önerileri için bakınız Cross-workload table maintenance and optimization.

Aşağıdaki bölümde, Delta tablolarınızın performansını elde etmek için çeşitli farklı dosya boyutu ayarlama özelliklerinin nasıl kullanılacağı gösterilmektedir.

Ayarlanabilir veri düzeni işlemleri

Optimize

Komut, OPTIMIZE Delta tablolarındaki verilerin düzenini geliştirmek için küçük dosyaları daha büyük dosyalar olarak yeniden yazar. Dosya boyutu ayarlama bilgileri de dahil olmak üzere daha fazla ayrıntı için OPTIMIZE komutu belgelerini gözden geçirin.

Otomatik Sıkıştırma

Otomatik Sıkıştırma, her yazma işleminden sonra bölüm durumunu otomatik olarak değerlendirir. Bir bölüm içinde aşırı dosya parçalanması (çok fazla küçük dosya) algıladığında, yazma işlemi tamamlandıktan hemen sonra zaman uyumlu OPTIMIZE bir işlemi tetikler. Bu yazıcı temelli dosya bakımı yaklaşımı genellikle en uygun yöntemdir çünkü sıkıştırma yalnızca program aracılığıyla yararlı olduğu belirlendiğinde yürütülür. Ayrıntılı yapılandırma seçenekleri ve ek bilgi için otomatik sıkıştırma belgelerine bakın.

Yazma işlemini optimize et

Yazma işlemini optimize etme, daha az ve daha büyük dosya oluşturan yazma öncesi sıkıştırma (bölüm paketleme) gerçekleştirerek küçük dosya ek yükünü azaltır. Bu yaklaşım, Spark Parquet dosyalarını yazmadan önce bellek içi verileri en uygun şekilde boyutlandırılmış bölmelere karıştırır ve anında yazma sonrası temizleme işlemlerine gerek kalmadan uygun boyutta dosyalar oluşturma olasılığını en üst düzeye çıkarır.

Verileri karıştırmanın hesaplama maliyeti belirli yazma senaryolarına aşırı ve gereksiz işlem süresi ekleyebileceğinden, yazmayı optimize etme işlemi dikkatli bir şekilde kullanılmalıdır. Yazma işlemi, aksi takdirde daha sonra sıkıştırmaya aday olabilecek küçük dosyalar üretecekse, yazma optimizasyonu yararlı olur.

En iyi duruma getirmenin daha az dosya yazılmasını nasıl sonuçlandığını gösteren ekran görüntüsü.

Yazma iyileştirme yaygın olarak aşağıdakiler için yararlıdır:

  • Bölümlenmiş tablolar
  • Küçük eklemelerin sık yapıldığı tablolar
  • Birçok dosyaya (MERGE, UPDATEve DELETE) dokunma olasılığı olan işlemler

Belirli tablolarda seçmeli uygulama için oturum yapılandırmasını kaldırın ve tablo özelliğini tek tek etkinleştirin. Oturum düzeyi yapılandırmasının sıfırlanması, Spark oturumlarının her tabloya, yazma iyileştirmesinin uygulanıp uygulanmayacağına göre ertelenmesini sağlar.

  1. Optimize yazmayı devre dışı bırak

    spark.conf.unset("spark.databricks.delta.optimizeWrite.enabled")
    
  2. Tek tek tabloda etkinleştir

    ALTER TABLE dbo.table_name
    SET TBLPROPERTIES ('delta.autoOptimize.optimizeWrite' = 'true')
    

Spark oturumundaki tüm bölümlenmiş tablolarda yazmaları etkinleştirmek için oturum yapılandırmasının ayarlanmamış olduğundan emin olun ve ardından oturum yapılandırmasını spark.microsoft.delta.optimizeWrite.partitioned.enabled etkinleştirin:

SET spark.microsoft.delta.optimizeWrite.partitioned.enabled = TRUE

Oluşturulan hedef dosya boyutu, optimize yazma işlemi sayesinde spark.databricks.delta.optimizeWrite.binSize ayarlama yapılandırması ile değiştirilebilir.

Uyarı

Kaynak profiline göre varsayılan en iyi duruma getirme yazma ayarları için kaynak profillerine bakın.

Hedef dosya boyutunu tutarlı bir şekilde ayarlama

En iyi duruma getirme, otomatik sıkıştırma ve yazmayı iyileştirme amacıyla en düşük ve en yüksek hedef dosya boyutu oturum yapılandırmasını ayarlama gereğini önlemek için Microsoft Fabric, tablo düzeyinde tüm ilgili veri düzeni yapılandırmalarını birleştirmenin bir aracı olarak tablo özelliğini sağlar delta.targetFileSize . Hedef dosya boyutu değeri bayt dizesi olarak girilir (örneğin, 1073741824b, 1048576k, 1024m, 1g). Belirtildiğinde, diğer tüm oturum yapılandırmalarından ve uyarlamalı hedef dosya boyutundan önceliklidir.

ALTER TABLE dbo.table_name
SET TBLPROPERTIES ('delta.targetFileSize' = '256m')

Uyarlamalı hedef dosya boyutu

Microsoft Fabric, delta.targetFileSize tablo özelliği aracılığıyla oturumdaki tüm tabloların veya bireysel tabloların hedef dosya boyutunu manuel olarak ayarlamayla ilgili karmaşıklığı ortadan kaldırmak için uyarlanabilir hedef dosya boyutu sağlar. Uyarlamalı hedef dosya boyutu, ideal hedef dosya boyutunu tahmin etmek için tablo boyutu gibi Delta tablo buluşsal yöntemlerini kullanır ve koşullar değiştikçe hedefi otomatik olarak güncelleştirir ve el ile müdahale veya bakım yükü olmadan en iyi performansı sağlar.

Uyarı

Microsoft, şu anda varsayılan olarak etkin olmasa da uyarlamalı hedef dosya boyutu oturum yapılandırmasını etkinleştirmenizi önerir.

Aşağıdaki Spark oturumu yapılandırmasını ayarlayarak Spark oturumunda oluşturulan veya değiştirilen tablolarda uyarlamalı hedef dosya boyutunu etkinleştirin:

SET spark.microsoft.delta.targetFileSize.adaptive.enabled = TRUE

Etkinleştirildiğinde uyarlamalı hedef dosya boyutu değerlendirilir ve aşağıdaki senaryolarda ayarlanır:

  • CREATE TABLE AS SELECT ve CREATE OR REPLACE TABLE AS SELECT işlemleri
  • Yazmaların üzerine yazma (örneğin, DataFrame.write.mode("overwrite") veya INSERT OVERWRITE)
  • ErrorIfExistsYeni tablo oluştururken , Appendveya Ignore modunda yazar
  • Komutun OPTIMIZE başında

İdeal boyut ayarlandıktan sonra, geçerli sezgisel yöntemlerin en son veri dağılımını ve tablo büyümesini yansıtmasını sağlamak için her OPTIMIZE işlemin başlangıcında yeniden değerlendirilir. Bu uyarlamalı yaklaşım zaman içinde hedef dosya boyutunu otomatik olarak güncelleştirir ve verileriniz büyüdükçe sorgu ve yazma performansını korurken el ile ayarlama gereksinimini ortadan kaldırır. Hiper ayarlama veya test kullanım örnekleri gibi belirli bir boyutta kilitlemeniz gerektiğinde, kullanıcı tanımlı delta.targetFileSize tablo özelliğini açıkça ayarlayarak uyarlamalı ayarı geçersiz kılabilirsiniz.

Değerlendirilen uyarlamalı hedef dosya boyutu değeri, çalıştırılarak DESCRIBE DETAIL veya DESCRIBE EXTENDED tabloda denetlenebilir. Uyarlamalı değerlendirilen boyut, table özelliğinde delta.targetFileSize.adaptivebayt dizesi olarak depolanır. Bu değer, en iyi duruma getirme, otomatik sıkıştırma ve en iyi duruma getirme yazma için maksimum veya hedef boyut yapılandırması olarak kullanılır. İlgili yapılandırmalar tarafından kullanılan en düşük değer, değerinin delta.targetFileSize.adaptiveyarısı olarak hesaplanır.

Uyarlamalı hedef dosya boyutu, aşağıdaki Spark oturum yapılandırmaları aracılığıyla daha fazla yapılandırılabilir:

Mülkiyet Description Varsayılan Değer Oturum Yapılandırması
minFileSize Uyarlamalı Hedef Dosya Boyutunun değerlendirildiğinde kullandığı bayt dizesi olarak en düşük dosya boyutunu (alt sınır) belirtir. 128 MB ile 1 GB arasında olmalıdır. 128m spark.microsoft.delta.targetFileSize.adaptive.minFileSize
maxFileSize Uyarlamalı Hedef Dosya Boyutunun değerlendirildiğinde kullandığı bayt dizesi olarak en büyük dosya boyutunu (üst sınır) belirtir. 128 MB ile 1 GB arasında olmalıdır. 1024m spark.microsoft.delta.targetFileSize.adaptive.maxFileSize
stopAtMaxSize When true sonlandığında, hesaplanan hedef dosya boyutu maxFileSize ulaştığında daha fazla boyut değerlendirmesi durdurularak çok büyük tablolarda değerlendirme yükü azaltılır. true spark.microsoft.delta.targetFileSize.adaptive.stopAtMaxSize

Uyarı

Etkin stopAtMaxSize olduğunda (varsayılan), uyarlamalı hedef boyutu ulaşıldıktan sonra maksimum değerde sabit kalır ve ek hesaplamalardan kaçınabilirsiniz. Tablolarınız büyüdükten sonra küçülebilirse, yeniden hesaplamaya maksimum eşiğin altında izin vermek için false bu özelliği olarak ayarlayın.

Aşağıdaki grafikte tablo boyutu ile en uygun parquet dosya boyutu arasındaki ilişki gösterilmektedir. Doku Spark Çalışma Zamanı, 10 GB'ın altındaki tablolar için hedef dosya boyutunu 128 MB olarak değerlendirir. Tablo boyutu büyüdükçe hedef dosya boyutu doğrusal olarak ölçeklendirilir ve 10 TB'ı aşan tablolar için 1 GB'a kadar ulaşır.

Tablo boyutu ile en uygun parquet dosya boyutu arasındaki ilişkiyi gösteren grafik.

128 MB'lık küçük bir değerle başlayıp tablo boyutu büyüdükçe parquet dosyalarının boyutunu ölçeklendirmenin basamaklı avantajları vardır:

  • Geliştirilmiş Delta dosyası atlama: Düzgün boyutlandırılmış dosyalar en iyi veri kümelemesine ve atlanmasına olanak tanıyarak Delta'nın dosya atlama protokollerinin sorgu yürütme sırasında daha ilgisiz dosyaları ortadan kaldırmasını sağlar. 1 GB dosya yerine 128 MB dosya içeren küçük bir tablo, 8 kat daha fazla olası dosya atlanması sağlar.

  • Daha düşük güncelleştirme maliyetleri: MERGE ve UPDATE işlemler yalnızca etkilenen dosyaları yeniden yazar. Doğru boyutlandırılmış dosyalar, işlem başına dokunulan dosya sayısını en aza indirerek yeniden yazılan veri miktarını azaltır. Silme Vektörleri etkinleştirildiğinde, uygun dosya boyutlandırma kritik hale gelir: büyük boyutlu dosyalardaki satır düzeyindeki silme taşları, sıkıştırma veya temizleme işlemleri sırasında önemli temizleme maliyetlerine neden olur.

  • İyileştirilmiş paralellik: Doğru boyutlandırılmış dosyalar Spark'ın ideal görev paralelliği elde edebilmesini sağlar. Çok fazla küçük dosya zamanlayıcıyı bunaltıyor; Çok az büyük dosya Spark havuzunuzu az kullanır. En uygun boyutlandırma hem okuma hem de yazma aktarım hızını en üst düzeye çıkarır.

Uyarlamalı hedef dosya boyutu, sıkıştırma performansını 30-60% artırabilir ve varsayılandan daha uygun bir dosya boyutu seçtiğinde daha hızlı sorgular ve yazmalar sunabilir. Uyarlamalı değerlendirme varsayılan Spark oturumu yapılandırmasıyla aynı boyuttaysa beklenen performans iyileştirmesi yoktur.

Önemli

Yazma amplifikasyonundan kaçınmaya çalışın. Tablonuz büyüdükçe uyarlamalı hedef dosya boyutu arttıkça zaten sıkıştırılmış dosyalar yeniden yazıldığında yazma amplifikasyonu gerçekleşir. Yazma amplifikasyonu önlemek için dosya düzeyinde sıkıştırma hedeflerini etkinleştirin. Bu özellik, önceki uyarlamalı hedef boyutları altında sıkıştırılmış dosyaların gereksiz yere yeniden sıkıştırılmasını önler. Daha fazla bilgi için dosya düzeyinde sıkıştırma hedefleri belgelerine bakın.

En iyi yöntemlerin özeti

  • Otomatik Sıkıştırma'yı etkinleştirin için sık sık küçük boyutlu yazma işlemleri (akış veya mikro toplu iş) yapan alım işlem hatlarında, elle zamanlamadan kaçınmak ve dosyaların otomatik olarak sıkıştırılmış halde kalmasını sağlamak.
    • Diğer yazma desenleri için, küçük dosyaların biriktirilmesine karşı bir sigorta olarak etkinleştirmek yararlı olabilir, ancak veri işleme hizmet düzeyi hedeflerinizin işleme süresindeki düzenli ani artışları tolere edip etmediğini tartmak yararlı olabilir.
  • En uygun hedef dosya boyutlarıyla ilgili tahminleri kaldırmak için uyarlamalı hedef dosya boyutunu etkinleştirin.
  • Küçük dosyaların oluşturulmasını ve aşağı akış bakım maliyetlerini azaltmak için, karıştırma, bölümleme senaryoları veya sık sık küçük yazma işlemlerini tolere eden toplu işleri içeren denetimli alma yollarında Optimize Yazma Özelliğini kullanın. Yazma öncesi sıkıştırma (yazmayı iyileştirme) yazma sonrası sıkıştırmadan (iyileştirme) daha az maliyetli olma eğilimindedir.
  • Birçok bölümü yeniden yazmanız veya Z-Order çalıştırmanız gerektiğinde sessiz pencereler sırasında tam tablo OPTIMIZE işlemlerini zamanlayın.
  • Yazma amplifikasyonu en aza indirmek ve daha etkili hale getirmek için OPTIMIZE etkinleştirin (bkz. hızlı iyileştirme).
  • Hedef dosya boyutu değerlerinin veri düzeni özelliklerinde ve Spark oturumlarında tutarlı olmasını sağlamak için tercihen delta.targetFileSize hedef dosya boyutu kullanın.
  • Tabloların boyutu büyüdükçe ve daha büyük hedef dosya boyutları kullandıkça yazma yükseltmesini önlemek için dosya düzeyinde sıkıştırma hedeflerini etkinleştirin.