Vakum ile kullanılmayan veri dosyalarını kaldırın
Unity Kataloğu yönetilen tablolarında tahmine dayalı iyileştirme otomatik olarak çalıştırılır VACUUM
. Databricks, veri bakımını basitleştirmek ve depolama maliyetlerini azaltmak için Tüm Unity Kataloğu yönetilen tablolarında tahmine dayalı iyileştirmelerin etkinleştirilmesini önerir. Bkz. Unity Kataloğu yönetilen tabloları için tahmine dayalı iyileştirme.
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.
Vakum için uyarı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.
VACUUM
içindeki tüm dosyaları kaldırdıktan sonra boş dizinler bırakabilir. Sonraki VACUUM
işlemler bu boş dizinleri siler.
Databricks, Delta tablolarında otomatik olarak çalıştırmak VACUUM
için tahmine dayalı iyileştirme kullanılmasını önerir. Bkz. Unity Kataloğu yönetilen tabloları 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. -
VACUUM
veya_
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_checkpoints
bir dizin adı kullanın.- Değişiklik veri akışı verileri, dizinindeki
_change_data
Delta Lake tarafından yönetilir ve ileVACUUM
kaldı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.
- Değişiklik veri akışı verileri, dizinindeki
- bekletme süresinden eski tablo sürümlerini sorgulama özelliği çalıştırıldıktan
VACUUM
sonra kaybolur. - Günlük dosyaları denetim noktası işlemlerinde otomatik olarak ve zaman uyumsuz olarak silinir ve tarafından
VACUUM
yönetılmaz. Günlük dosyalarının varsayılan saklama süresi 30 gün olsa da, bir tabloda çalıştırmakVACUUM
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 VACUUM
silinmiş 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 table_name -- vacuum files not required by versions older than the default retention period
VACUUM table_name RETAIN 100 HOURS -- vacuum files not required by versions more than 100 hours old
VACUUM table_name 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.
Tam ve lite modu
Önemli
Bu özellik Databricks Runtime 16.1 ve üzeri sürümlerin Genel Önizleme sürümündedir.
LITE
anahtar sözcüğünü, tablo dizinindeki tüm dosyaların listelenmesinden kaçınan alternatif bir VACUUM
modunu tetiklemek için vacuum ifadenizde belirtebilirsiniz.
LITE
modu, artık VACUUM
bekletme eşiği içinde olmayan veri dosyalarını tanımlamak için Delta işlem günlüğünü kullanır ve bu veri dosyalarını tablodan kaldırır.
LITE
modu özellikle sık VACUUM
işlemleri gerektiren büyük tablolar için kullanışlıdır çünkü kaldırılacak veri dosyalarını tanımlamak için tüm dosyaları listeleme gereksinimini ortadan kaldırır.
Not
VACUUM
modunda LITE
çalıştırıldığında işlem günlüğünde başvurulmayan dosyalar silinmez. Örneğin, durdurulan bir işlem tarafından oluşturulan dosyalar.
VACUUM
modunda LITE
için aşağıdaki söz dizimini kullanın:
VACUUM table_name LITE
LITE
modu aşağıdaki gereksinime sahiptir:
- Yapılandırılan işlem günlüğü saklama eşiğinde (varsayılan olarak 30 gün) en az bir başarılı
VACUUM
işlemi çalıştırmış olmanız gerekir.
Bu gereksinim karşılanmazsa, VACUUM
LITE
modunda çalıştırmayı denediğinizde aşağıdaki hata iletisi görüntülenir. Devam etmek için VACUUM
FULL
modunda çalıştırmanız gerekir.
VACUUM <tableName> LITE cannot delete all eligible files as some files are not referenced by the Delta log. Please run VACUUM FULL.
FULL
modu vakum için varsayılan moddur. Aşağıdaki komutla tam modu açıkça çalıştırabilirsiniz:
VACUUM table_name FULL
Bkz. VACUUM.
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:
- Sütun eşlemesi etkinleştirilmiş sütunları bırakma.
- Silme vektörlerinin etkinleştirildiği satırları silme.
- Silme vektörleri etkinleştirildiğinde Foton özellikli kümelerde yapılan tüm veri değişiklikleri.
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:
-
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. - 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 göre dolduğunda VACUUM
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, VACUUM
işlemin iki aşamada gerçekleştiğini anlamanıza yardımcı olur:
- İş, 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.
- 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.enabled
false
olarak 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 HISTORY
denetim olaylarını sorgulayabilirsiniz.