Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Delta tablo dosyaları zaman içinde parçalanır. Parçalanma dosya işlemi ek yükünü artırır, sıkıştırma verimliliğini azaltır ve okuyucu paralelliğini sınırlayabilir. Sıkıştırma, Spark'ın verileri daha verimli okuyabilmesi ve işleyebilmesi için birçok küçük dosyayı daha az doğru boyutlu dosyaya yeniden yazar.
OPTIMIZE Komut, birincil sıkıştırma işlemidir. Küçük dosyaları ideal bir dosya boyutu hedefleyen bölmeler halinde gruplandırıp daha sonra bunları depolama alanına yeniden yazar.
SQL Analytics Uç Noktası, Power BI Direct Lake ve Spark genelinde sıkıştırma stratejileriyle ilgili iş yükleri arası yönergeler için bkz. İş yükleri arası tablo bakımı ve iyileştirmesi.
Sıkıştırma yöntemleri
Microsoft Fabric, Delta tablolarında en uygun dosya boyutlarını korumak için çeşitli yaklaşımlar sunar:
OPTIMIZE komut
OPTIMIZE Komut, Delta tablolarını sıkıştırmaya yönelik temel işlemdir. Delta tablolarındaki veri düzenini geliştirmek için küçük dosyaları daha büyük dosyalara yeniden yazar.
| Mülkiyet | Description | Varsayılan değer | Oturum yapılandırması |
|---|---|---|---|
| minFileSize | Bu eşikten küçük dosyalar birlikte gruplandırılır ve daha büyük dosyalar olarak yeniden yazılır. | 1073741824 (1 GB) | spark.databricks.delta.optimize.minFileSize |
| maxFileSize | komutu tarafından OPTIMIZE oluşturulan hedef dosya boyutu. |
1073741824 (1 GB) | spark.databricks.delta.optimize.maxFileSize |
OPTIMIZE idempotent'tir, ancak aşırı boyutlu minFileSize yazma büyütmesini artırabilir. Örneğin, minFileSize 1 GB olarak ayarlandığında, küçük bir ek yazma işlemi sonrasında 900 MB'lık bir dosya yeniden yazılabilir. Otomatik dosya boyutu yönetimi kılavuzu için bkz. uyarlamalı hedef dosya boyutu.
OPTIMIZE Z-Order ile
ZORDER BY koşulunu kullandığınızda, OPTIMIZE benzer değerlere sahip satırların aynı dosyalarda birlikte bulunması için etkin dosyaları yeniden yazar. Birlikte bulunan düzen, seçmeli filtreler için dosya atlama işlemini iyileştirir. Şu durumlarda Z-Order kullanın:
- Sorgularınız sık sık iki veya daha fazla sütunu birlikte filtreler (örneğin, tarih + customer_id) ve
- Bu önermeler, dosya düzeyinde atlama yoluyla taranan dosya sayısını azaltacak kadar seçicidir.
OPTIMIZE dbo.table_name ZORDER BY (column1, column2)
OPTIMIZE V-Order ile
VORDER cümlesi, sıkıştırma için kapsamlanan dosyaların V-Order optimizasyonunun uygulanmasına neden olur. V-Order hakkında daha fazla bilgi için ayrıntılı belgelere bakın.
OPTIMIZE dbo.table_name VORDER
Z-Order ve V-Order'ı tek bir komutta birleştirebilirsiniz. Spark işlemleri şu sırayla uygular: bölme sıkıştırma → Z-Order → V-Order.
OPTIMIZE dbo.table_name ZORDER BY (column1, column2) VORDER
sırasında OPTIMIZE V-Order davranışı komutu nasıl çağırdığınıza bağlıdır:
| Çağrı | Behavior |
|---|---|
OPTIMIZE table VORDER |
Oturum veya tablo ayarlarından bağımsız olarak, yeniden yazılmış dosyalarda V-Order'ı zorlar. |
OPTIMIZE table (VORDER anahtar kelime yok) |
Ayarlanmışsa V-Order davranışını TBLPROPERTIES("delta.parquet.vorder.enabled") öğesinden devralır; aksi takdirde oturum yapılandırması spark.sql.parquet.vorder.default kullanılır. |
OPTIMIZE sıvı kümeleme ile
Sıvı kümeleme bir tablo seçeneği olarak belirtilir; Ayrıntılar için bkz. Sıvı kümelediğini etkinleştirme . Sıvı kümeleme etkinleştirildiğinde, OPTIMIZE kümeleme ilkesini uygulayan fiziksel yeniden yazmayı gerçekleştirir.
Önemli
Veriler yalnızca OPTIMIZE sıvı kümelenmiş özellikli tablolarda çalıştırıldığında kümelenir. Normal yazma işlemleri verileri kesinlikle kümelemiyor. Otomatik sıkıştırmayı kullanma veya iyileştirme işlerini el ile zamanlama gibi bir sıkıştırma stratejisine sahip olmak, kümelenmiş verilerin (geliştirilmiş Delta dosyası atlama) avantajlarını elde etmek için kritik öneme sahiptir.
Hızlı iyileştirme
Hızlı iyileştirme, Delta tablo dosyalarını akıllı bir şekilde analiz eder ve performansı anlamlı bir şekilde geliştirme olasılığı olmayan sıkıştırma işlemlerini atlar.
Küçük dosyalar mevcut olduğunda dosyaları körü körüne sıkıştırmak yerine hızlı iyileştirme, her aday kutusunun (küçük dosya grubu) yapılandırılabilir en iyi uygulama sıkıştırma hedeflerini karşılayıp karşılamadığını değerlendirir. Hızlı İyileştirme, birleştirmenin en düşük hedef boyutuna ulaşma olasılığı yüksekse veya çok fazla küçük dosya varsa, bir dosya kümesinde sıkıştırmayı çalıştırır. Aksi takdirde, bu grubu atlar veya sıkıştırması gereken dosya sayısını azaltır.
Hızlı iyileştirme, sıkıştırma beklentilerinize göre ince ayarlanabilir:
| Mülkiyet | Description | Varsayılan değer | Oturum yapılandırması |
|---|---|---|---|
| minNumFiles | Bölme sıkıştırılmış bir dosya üretmek için tahmin edilen yeterli veri içermiyorsa, iyileştirmenin gerçekleştirilmesi için bir bölmede bulunması gereken küçük dosyaların sayısı. | 50 | spark.microsoft.delta.optimize.fast.minNumFiles |
| parquetCoefficient | Bölmenin sıkıştırma kapsamına dahil edilmesi için bir bölmede bulunması gereken küçük dosya verilerinin minimum miktarını belirlemek için iyileştirme bağlamı minimum dosya boyutuyla çarpılır. | 1.3 | spark.microsoft.delta.optimize.fast.parquetCoefficient |
Uyarı
Bir parquetCoefficient bölmenin hedef boyutunun iyileştirme bağlamının en düşük hedef dosya boyutundan daha büyük olmasına neden olur. Bu katsayı, birden çok küçük parke dosyasının birleştirilmesinin daha iyi sıkıştırmaya ve dolayısıyla küçük dosyaların toplamından daha az veriye neden olduğu gerçeğini ifade eder. Hızlı optimize etmenin bölmeleri atlama davranışını daha temkinli hâle getirmek için değeri artırın veya bölmelerin daha serbest atlanmasına izin vermek için değeri azaltın.
Nasıl çalışır?
Hızlı optimizasyon, bölmeler sıkıştırılmadan önce ek denetimler getirir. Her aday kutusu için hızlı iyileştirme şunları değerlendirir:
- Konteynırdaki tahmini ham veri miktarı (küçük boyutlu dosyaların toplamı)
- Küçük dosyaları birleştirmenin, yapılandırılan en düşük hedef boyutu karşılayan bir dosya oluşturup oluşturmayacağının tahmin edilip edilmediği
- Bölmenin yapılandırılmış en az küçük dosya sayısını içerip içermediği
Hızlı iyileştirme, küçük dosyaların her bir kutusunu değerlendirir ve yalnızca en düşük hedef boyutuna ulaşma olasılığı olan veya en düşük dosya sayısını aşan bölmeleri sıkıştırıyor. Bu eşikleri karşılamayan bölmeler atlanır veya kısmen sıkıştırılır. En iyi duruma getirilmemiş bölmelerin atlanması gereksiz yeniden yazmaları azaltır, yazma amplifikasyonu azaltır ve OPTIMIZE işlerini daha etkili hale getirir.
Uyarı
Tam uygulama zaman içinde gelişmeye tabidir.
Hızlı iyileştirme, Delta tablosu yaşam döngüsüne göre yeniden yazılan verileri azaltabilir. Aşağıdaki diyagramda gösterildiği gibi, hızlı optimize, suboptimal bölmeleri atlayarak daha hızlı ve daha idempotent OPTIMIZE görevlerle daha az yazma amplifikasyonu sağlar.
Uyarı
Yalnızca çizim amacıyla, yukarıdaki diyagramlarda sıkıştırmadan yazılan dosyanın boyutunun küçük dosyaların boyutunun toplamı olduğu varsayılır. Ayrıca bir parquetCoefficient değerinin 1 olduğunu belirtir.
Sınırlamalar
- Sıvı kümeleme ve Z-Order işlemleri için geçerli değildir
- Hızlı iyileştirme, otomatik sıkıştırma davranışını değiştirmez
Dosya düzeyinde sıkıştırma hedefleri
Daha önce sıkıştırılmış (yeterince büyük) olarak kabul edilen verilerin sıkıştırma min ve maksimum dosya boyutu hedeflerini değiştirerek yeniden yazılmasını önlemek için, spark.microsoft.delta.optimize.fileLevelTarget.enabled zaten sıkıştırılmış dosyaların yeniden derlenmesini önlemek için etkinleştirilebilir. Etkinleştirildiğinde, daha önce sıkıştırma sırasında hedef dosya boyutunun en az yarısını karşılarsa dosyalar yeniden derlenmez. Dosya düzeyi hedeflerinin korunması, sıkıştırma hedef boyutunun zaman içinde değişmesi nedeniyle yazma amplifikasyonunu en aza indirir (örneğin, uyarlamalı hedef dosya boyutunu değerlendirme ve daha büyük bir hedef ayarlama gibi). Etkinleştirilirse, OPTIMIZE_TARGET_SIZE etiketi, OPTIMIZE çalıştırıldığında veya delta.targetFileSize ya da delta.targetFileSize.adaptive tablo özelliği ayarlandığında herhangi bir yazma işlemi için yeni dosyalara eklenir.
Uyarı
Varsayılan olarak etkinleştirilmemiş olsa da Microsoft, olası yazma amplifikasyonlarını sınırlamak için dosya düzeyinde sıkıştırma hedeflerinin etkinleştirilmesini önerir.
Otomatik sıkıştırma
Otomatik sıkıştırma, her yazma işleminden sonra bölüm durumunu 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. Sıkıştırma yalnızca program aracılığıyla yararlı olduğu belirlendiğinde yürütülür çünkü dosya bakımına yönelik yazıcı temelli bu yaklaşım en uygun yöntemdir.
Oturum düzeyinde etkinleştir
Bu Spark oturumunda oluşturulan yeni tablolar için otomatik sıkıştırmayı etkinleştirmek için oturum düzeyinde ayarlayın spark.databricks.delta.autoCompact.enabled :
Tablo düzeyinde etkinleştir
Belirli tablolar için otomatik sıkıştırmayı etkinleştirmek için table özelliğini delta.autoOptimize.autoCompact ayarlayın:
CREATE TABLE dbo.table_name
TBLPROPERTIES ('delta.autoOptimize.autoCompact' = 'true')
Tablo oluştururken otomatik sıkıştırmayı etkinleştirmek için DataFrameWriter seçeneğini delta.autoOptimize.autoCompact kullanın:
df.write.option('delta.autoOptimize.autoCompact', 'true').saveAsTable('dbo.table_name')
Mevcut bir tabloda aynı tablo özelliğini etkinleştirin:
ALTER TABLE dbo.table_name
SET TBLPROPERTIES ('delta.autoOptimize.autoCompact' = 'true')
Değerlendirme ek yükünü azaltma
Fabric Spark çalışma zamanı 2.0'dan (Delta 4.1) itibaren onCheckpointOnly otomatik sıkıştırma modunu etkinleştirebilirsiniz. Varsayılan olarak, otomatik sıkıştırma, bir tablonun çok fazla küçük dosyası olup olmadığını belirlemek için her yazma işleminden sonra dosya meta verilerini değerlendirir.
onCheckpointOnly ile değerlendirme, günlük denetim noktası alma işlemlerine (genellikle her 10 commit'te bir) ertelenir. Denetim noktası zamanında, tablo anlık görüntüsü zaten tamamen yeniden yapılandırılmıştır, bu nedenle değerlendirme ek tarama gerektirmek yerine zaten bellekte olan meta verilerden okunur. Ertelenen değerlendirme, işleme başına ek yükü azaltırken tabloların düzenli aralıklarla sıkıştırılmasını sağlar.