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.
Dosya sistemleri ve ilişkisel veritabanları gibi veriler de yakından yönetilmediği sürece zaman içinde parçalanır ve bu da verileri okumak için aşırı işlem maliyetine neden olur. Delta Lake bir özel durum değildir. Tek tek dosya işlemi maliyetlerini azaltmak, veri sıkıştırmayı iyileştirmek ve okuyucu paralelliğini iyileştirmek için veri dosyaları düzenli aralıklarla en uygun düzene yeniden yazılmalıdır. Komut OPTIMIZE bu zorluğu ele alır: bir bölüm içindeki küçük dosyaları ideal bir dosya boyutunu hedefleyen kutular halinde gruplandırıp depolamaya yeniden yazar. Sonuç, aynı verilerin daha az dosyaya sıkıştırılmış olmasıdır.
İpucu
Farklı tüketim senaryolarına (SQL Analytics Uç Noktası, Power BI Direct Lake, Spark) yönelik sıkıştırma stratejileri hakkında kapsamlı iş yükleri arası kılavuz için bkz. İş yükü tablosu 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 g) | spark.databricks.delta.optimize.minFileSize |
| maxFileSize | komutu tarafından OPTIMIZE oluşturulan hedef dosya boyutu. |
1073741824 (1g) | spark.databricks.delta.optimize.maxFileSize |
Önemli
Idempotent bir işlem olan OPTIMIZE (yani, art arda iki kez çalıştırmak veriyi yeniden yazmaz), Delta tablosunun boyutuna göre çok büyük bir minFileSize değeri kullanmak yazma amplifikasyonuna neden olabilir ve bu da işlemi gerekenden daha hesaplamalı ve pahalı hale getirebilir. Örneğin, dosyanız minFileSize 1 GB olarak ayarlandıysa ve tablonuzda 900 MB'lık bir dosya varsa, tablonuza 1 KB'lik küçük bir dosya yazılarak çalıştırıldığında OPTIMIZE makul boyuttaki 900 MB dosyası yeniden yazılır. Dosya boyutunu otomatik olarak yönetme hakkında yönergeler için uyarlamalı hedef dosya boyutu belgelerine bakın.
OPTIMIZE Z-Order ile
ZORDER BY yan tümcesi belirtildiğinde, OPTIMIZE, z-sırası sütunları için benzer değerlere sahip satırların aynı dosyalarda bir arada bulunmasını sağlamak amacıyla tüm etkin dosyaları yeniden yazar, bu da bu sütunları filtreleyen sorgular için dosya atlama etkinliğini artırır. Ş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
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. Bu değer, fast optimize işleminin kutuları atlama sıklığında daha muhafazakâr olacak şekilde artırılabilir veya daha esnek kutu atlamalarına izin vermek için azaltılabilir.
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şabilecek veya en düşük dosya sayısını aşacak küçük dosyaları 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 tabloları yaşam döngüsünde daha az verinin yeniden yazılmasıyla sonuçlanabilir. Aşağıdaki diyagramda gösterildiği gibi, hızlı iyileştirme, en iyi duruma getirilmemiş bölmeleri sıkıştırmayı atlar. Net sonuç daha hızlı ve daha OPTIMIZE etkili işler ve daha az yazma amplifiyesidir.
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.
Yeni tablolarda otomatik sıkıştırmayı etkinleştirmek için oturum düzeyinde ayarlayın:
Tablo düzeyinde yalnızca belirli tablolar için etkinleştirecek şekilde ayarlayın:
CREATE TABLE dbo.table_name
TBLPROPERTIES ('delta.autoOptimize.autoCompact' = 'true')
Yeni tablolarda etkinleştirmek için DataFrameWriter seçeneğini kullanın:
df.write.option('delta.autoOptimize.autoCompact', 'true').saveAsTable('dbo.table_name')
Mevcut tablolarda etkinleştir:
ALTER TABLE dbo.table_name
SET TBLPROPERTIES ('delta.autoOptimize.autoCompact' = 'true')
Otomatik sıkıştırma davranışı aşağıdaki Spark oturum yapılandırmaları aracılığıyla ayarlanabilir:
| Mülkiyet | Description | Varsayılan değer | Oturum yapılandırması |
|---|---|---|---|
| maxFileSize | Sıkıştırılmış dosyalar için bayt cinsinden hedef en büyük dosya boyutu. | 134217728b (128 MB) | spark.databricks.delta.autoCompact.maxFileSize |
| minFileSize | Bir dosyanın sıkıştırılmış olarak kabul edilmesi için bayt cinsinden en düşük dosya boyutu. Bu eşiğin altındaki her şey sıkıştırmaya dahil edilir ve minNumFiles eşiğine doğru sayılır. |
Varsayılan olarak Unset, açıkça bir değer ayarlamadığınız sürece maxFileSize ayarının 1/2'si olarak hesaplanır. |
spark.databricks.delta.autoCompact.minFileSize |
| minNumFiles | Otomatik sıkıştırmanın tetiklenebilmesi için eşik altında minFileSize bulunması gereken en az dosya sayısı. |
50 | spark.databricks.delta.autoCompact.minNumFiles |
Uyarı
Microsoft, işleri zamanlamak yerine OPTIMIZE kullanılmasını önerir. Otomatik sıkıştırma genellikle okuma/yazma performansını en üst düzeye çıkarmada zamanlanmış sıkıştırma işlerinden daha iyi performans gösterir ve genellikle zamanlanmış işleri çalıştırma sıklığını kodlama, zamanlama ve iyileştirmenin bakım yükünü ortadan kaldırır. Veri işleme hizmet düzeyi hedefleri, sıkıştırma gerektiğinde otomatik sıkıştırmanın tetiklenmesinden kaynaklanan ek gecikme süresini tolere ettiğinde otomatik sıkıştırma önerilir. Veri gecikme gereksinimleri sıkıysa, zaman uyumlu sıkıştırma işlemlerinin tetiklenmesi nedeniyle yazma işlemlerinin dönemsel ani artışlar yaşamaması için iyileştirmenin ayrı bir Spark havuzunda çalışacak şekilde zamanlanması daha etkili olabilir.
Önemli
Sıkıştırma, kullanmak için kritik bir strateji olsa da, yazmayı iyileştirme gibi özellikler aracılığıyla küçük dosyalar yazmaktan kaçınma ile de uygun şekilde eşlenmelidir. Daha fazla bilgi için yazmayı iyileştirme yönergelerine bakın.
Lakehouse masa bakımı
Kullanıcılar Lakehouse kullanıcı arabiriminde olduğu gibi OPTIMIZE geçici bakım işlemleri çalıştırabilir. Daha fazla bilgi için bkz. lakehouse tablo bakımı.
En iyi yöntemlerin özeti
-
Otomatik Sıkıştırma'yı etkinleştirin ve sık sık küçük yazma işlemleri (akış veya mikroparti) olan alım işlem hatlarında el ile zamanlama yapmaktan kaçının ve dosyaların otomatik olarak sıkıştırılmasını sağlayın.
- 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.
- Birçok bölümü yeniden yazmanız veya Z-Order çalıştırmanız gerektiğinde sessiz pencereler sırasında tam tablo
OPTIMIZEişlemlerini zamanlayın. - Yazma amplifikasyonunu azaltmak ve hale getirmek için
OPTIMIZE'yi etkinleştirin. - 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.
- Önceden yazma sıkıştırmanın (yazmayı iyileştirme) yazma sonrası sıkıştırmadan (iyileştirme) daha az maliyetli olduğunu unutmayın. En iyi yöntemler için bkz. yazma belgelerini iyileştirme .