Vakum ile kullanılmayan veri dosyalarını kaldırın

Komutunu tabloda çalıştırarak VACUUM , artık bekletme eşiğinden daha eski bir Delta tablosu tarafından başvurulamayacak veri dosyalarını kaldırabilirsiniz. Aşağıdaki hususlar nedeniyle düzenli olarak çalışmak VACUUM maliyet ve uyumluluk açısından önemlidir:

  • Kullanılmayan veri dosyalarının silinmesi, bulut depolama maliyetlerini azaltır.
  • tarafından VACUUM kaldırılan veri dosyaları değiştirilmiş veya silinmiş kayıtlar içerebilir. Bu dosyaların bulut depolama alanından kalıcı olarak kaldırılması, bu kayıtların artık erişilebilir olmamasını sağlar.

Çalıştırıldıktan VACUUM sonra veri dosyaları için varsayılan bekletme eşiği 7 gündür. Bu davranışı değiştirmek için bkz . Zaman yolculuğu sorguları için veri saklamayı yapılandırma.

Databricks, Delta tablolarında otomatik olarak çalıştırmak VACUUM için tahmine dayalı iyileştirme kullanılmasını önerir. Bkz . Delta Lake için tahmine dayalı iyileştirme.

Bazı Delta Lake özellikleri, verileri yeniden yazmak yerine silinmiş olarak işaretlemek için meta veri dosyalarını kullanır. Bu silmeleri işlemek ve veri dosyalarını yeniden yazmak için kullanabilirsiniz REORG TABLE ... APPLY (PURGE) . Verilerin yeniden yazılmasını zorlamak için bkz. Yalnızca meta veri silmelerini temizleme.

Önemli

  • Databricks Runtime 13.3 LTS ve üzeri sürümlerde Unity VACUUM Kataloğu ile yönetilen tablolarla sığ kopyaların semantiği diğer Delta tablolarından farklıdır. Bkz . Vacuum ve Unity Kataloğu sığ klonlar.
  • VACUUMveya .ile _ başlayan dizinleri yoksayarak Delta Lake tarafından yönetilmeyen dizinlerden tüm dosyaları kaldırır. Yapılandırılmış Akış denetim noktaları gibi ek meta verileri delta tablosu dizininde depoluyorsanız, gibi _checkpointsbir dizin adı kullanın.
    • Değişiklik veri akışı verileri, dizinindeki _change_data Delta Lake tarafından yönetilir ve ile VACUUMkaldırılır. Bkz . Azure Databricks'te Delta Lake değişiklik veri akışını kullanma.
    • Bloom filtre dizinleri Delta Lake tarafından yönetilen dizini kullanır _delta_index . VACUUM bu dizindeki dosyaları temizler. Bkz . Bloom filtre dizinleri.
  • bekletme süresinden eski tablo sürümlerini sorgulama özelliği çalıştırıldıktan VACUUMsonra kaybolur.
  • Günlük dosyaları denetim noktası işlemlerinde otomatik olarak ve zaman uyumsuz olarak silinir ve tarafından VACUUMyönetılmaz. Günlük dosyalarının varsayılan saklama süresi 30 gün olsa da, bir tabloda çalıştırmak VACUUM zaman yolculuğu için gerekli olan veri dosyalarını kaldırır.

Not

Disk önbelleğe alma etkinleştirildiğinde, bir küme ile VACUUMsilinmiş Parquet dosyalarından veriler içerebilir. Bu nedenle, dosyaları silinmiş olan önceki tablo sürümlerinin verilerini sorgulamak mümkün olabilir. Kümenin yeniden başlatılması önbelleğe alınan verileri kaldırır. Bkz . Disk önbelleğini yapılandırma.

Vakum için örnek söz dizimi

VACUUM eventsTable   -- vacuum files not required by versions older than the default retention period

VACUUM '/data/events' -- vacuum files in path-based table

VACUUM delta.`/data/events/`

VACUUM delta.`/data/events/` RETAIN 100 HOURS  -- vacuum files not required by versions more than 100 hours old

VACUUM eventsTable DRY RUN    -- do dry run to get the list of files to be deleted

Spark SQL söz dizimi ayrıntıları için bkz . VACUUM.

Scala, Java ve Python söz dizimi ayrıntıları için Delta Lake API belgelerine bakın.

Not

Veri dosyasının RETAIN kaldırılması gerekip gerekmediğini belirlemek için kullanılan eşiği belirtmek için anahtar sözcüğünü kullanın. komutu bu VACUUM eşiği kullanarak belirtilen süreye geri bakar ve o anda en son tablo sürümünü tanımlar. Delta, bu tablo sürümünü ve tüm yeni tablo sürümlerini sorgulamak için gereken tüm veri dosyalarını korur. Bu ayar diğer tablo özellikleriyle etkileşim kurar. Bkz . Zaman yolculuğu sorguları için veri saklamayı yapılandırma.

Verileri yeniden yazmaya zorlamak için yalnızca meta veri silmelerini temizleme

Komut, REORG TABLE geçici silmeleri APPLY (PURGE) uygulamak için verileri yeniden yazmak için söz dizimini sağlar. Geçici silme işlemleri verileri yeniden yazmaz veya veri dosyalarını silmez, bazı veri değerlerinin değiştiğini belirtmek için meta veri dosyalarını kullanır. Bkz . REORG TABLE.

Delta Lake'te geçici silmeler oluşturan işlemler aşağıdakileri içerir:

Geçici silmeler etkinleştirildiğinde, veriler silindikten veya güncelleştirildikten sonra bile eski veriler tablonun geçerli dosyalarında fiziksel olarak bulunabilir. Bu verileri tablodan fiziksel olarak kaldırmak için aşağıdaki adımları tamamlayın:

  1. REORG TABLE ... APPLY (PURGE)'i çalıştırın. Bunu yaptıktan sonra, eski veriler artık tablonun geçerli dosyalarında mevcut değildir, ancak yine de zaman yolculuğu için kullanılan eski dosyalarda bulunur.
  2. Bu eski dosyaları silmek için komutunu çalıştırın VACUUM .

REORG TABLE işlem tamamlandıktan sonra tablonun yeni bir sürümünü oluşturur. Bu işlemden önceki geçmiş tüm tablo sürümleri eski veri dosyalarına başvurur. Kavramsal olarak bu, geçerli tablo sürümündeki OPTIMIZE veriler tutarlı kalsa bile veri dosyalarının yeniden yazıldığı komuta benzer.

Önemli

Veri dosyaları yalnızca dosyaların süresi saklama süresine VACUUM göre dolduğunda silinir. Bu, VACUUM eski dosyaların süresinin dolması için öğesinin REORG sonrasında bir gecikmeyle yapılması gerektiği anlamına gelir. Saklama süresi VACUUM , tutulan maksimum geçmişin azaltılması karşılığında gerekli bekleme süresini kısaltmak için azaltılabilir.

Vakum hangi boyut kümesine ihtiyaç duyar?

için doğru küme boyutunu seçmek, VACUUMişlemin iki aşamada gerçekleştiğini anlamanıza yardımcı olur:

  1. İş, kaynak dizindeki dosyaları paralel olarak listelemek için tüm kullanılabilir yürütücü düğümlerini kullanarak başlar. Bu liste, silinecek dosyaları tanımlamak için Delta işlem günlüğünde şu anda başvuruda bulunu olan tüm dosyalarla karşılaştırılır. Sürücü bu süre boyunca boşta durur.
  2. Ardından sürücü silinecek her dosya için silme komutları gönderir. Dosya silme yalnızca sürücüye yönelik bir işlemdir, yani tüm işlemler çalışan düğümleri boştayken tek bir düğümde gerçekleşir.

Databricks, özellikle uzun süre çalışan vakum işleri için maliyeti ve performansı iyileştirmek için aşağıdakileri önerir:

  • Her çalışanın 8 çekirdeğinin bulunduğu 1-4 çalışan için otomatik ölçeklendirme kümesine sahip bir kümede vakum çalıştırın.
  • 8 ile 32 çekirdek arasında bir sürücü seçin. Yetersiz bellek (OOM) hatalarından kaçınmak için sürücünün boyutunu artırın.

İşlemler düzenli olarak 10 binden fazla dosyayı siliyorsa veya 30 dakikadan fazla işlem süresi alıyorsa VACUUM , sürücünün boyutunu veya çalışan sayısını artırmak isteyebilirsiniz.

Kaldırılacak dosyaları tanımlarken yavaşlamanın gerçekleştiğini fark ederseniz, daha fazla çalışan düğümü ekleyin. Silme komutları çalışırken yavaşlama oluşursa, sürücünün boyutunu artırmayı deneyin.

Vakumu ne sıklıkta çalıştırmalısınız?

Databricks, fazla bulut veri depolama maliyetlerini azaltmak için tüm tablolarda düzenli olarak çalıştırılmasını VACUUM önerir. Vakum için varsayılan bekletme eşiği 7 gündür. Daha yüksek bir eşik ayarlamak, tablonuz için daha büyük bir geçmişe erişmenizi sağlar, ancak depolanan veri dosyalarının sayısını artırır ve sonuç olarak bulut sağlayıcınızdan daha fazla depolama maliyetine neden olur.

Neden düşük bekletme eşiğine sahip bir Delta tablosunu vakumlayamazsınız?

Uyarı

Eski anlık görüntüler ve kaydedilmemiş dosyalar eş zamanlı okuyucular veya yazıcılar tarafından tabloda kullanılmaya devam ettiğinden, bekletme aralığını en az 7 gün olarak ayarlamanız önerilir. Etkin dosyaları temizlerse VACUUM , eşzamanlı okuyucular başarısız olabilir veya daha da kötüsü, henüz işlenmemiş dosyaları sildiğinizde VACUUM tablolar bozulabilir. En uzun süre çalışan eşzamanlı işlemden daha uzun bir aralık ve herhangi bir akışın tablodaki en son güncelleştirmenin gerisinde kalabileceği en uzun süreyi seçmelisiniz.

Delta Lake tehlikeli bir komut çalıştırmanızı önlemek için bir VACUUM güvenlik denetimine sahiptir. Bu tabloda, belirtmeyi planladığınız bekletme aralığından daha uzun sürecek bir işlem gerçekleştirildiğinden eminseniz, Spark yapılandırma özelliğini spark.databricks.delta.retentionDurationCheck.enabledfalseolarak ayarlayarak bu güvenlik denetimini kapatabilirsiniz.

Denetim bilgileri

VACUUM Delta işlem günlüğüne yapılan işlemeler denetim bilgilerini içerir. kullanarak DESCRIBE HISTORYdenetim olaylarını sorgulayabilirsiniz.