Silme vektörleri nedir?
Silme vektörleri, Delta Lake tablolarında etkinleştirilebilen bir depolama iyileştirme özelliğidir. Varsayılan olarak, bir veri dosyasındaki tek bir satır silindiğinde, kaydı içeren Parquet dosyasının tamamı yeniden yazılmalıdır. Tablo, , UPDATE
ve MERGE
işlemleri için silme vektörleri etkinleştirildiğinde, DELETE
parquet dosyasını yeniden yazmadan var olan satırları kaldırıldı veya değiştirildi olarak işaretlemek için silme vektörlerini kullanır. Tablodaki sonraki okumalar, silme vektörleri tarafından belirtilen silme işlemlerini en son tablo sürümüne uygulayarak mevcut tablo durumunu çözer.
Databricks, tüm iyileştirmelerden yararlanmak üzere silme vektörlerine sahip tablolar yazmak için Databricks Runtime 14.3 LTS ve üzerini kullanmanızı önerir. Databricks Runtime 12.2 LTS ve üzerinde silme vektörlerinin etkinleştirildiği tabloları okuyabilirsiniz.
Databricks Runtime 14.2 ve üzeri sürümlerinde, silme vektörlerine sahip tablolar satır düzeyi eşzamanlılığı destekler. Bkz . Satır düzeyi eşzamanlılık ile yazma çakışmaları.
Not
Foton, tahmine dayalı G/Ç güncelleştirmeleri için silme vektörlerinden yararlanarak , MERGE
ve UPDATE
işlemlerini hızlandırmaktadırDELETE
. Silme vektörlerini okumayı destekleyen tüm istemciler, bu güncelleştirmelerin tahmine dayalı G/Ç tarafından üretilip üretildiğine bakılmaksızın silme vektörleri üreten güncelleştirmeleri okuyabilir. Bkz. Güncelleştirmeleri hızlandırmak için tahmine dayalı G/Ç kullanma.
Silme vektörlerini etkinleştirme
Silme vektörleri, SQL ambarı veya Databricks Runtime 14.1 veya üzeri kullanılarak yeni tablo oluşturulurken varsayılan olarak etkinleştirilir.
Önemli
Çalışma alanı yönetici ayarı, silme vektörlerinin yeni Delta tabloları için otomatik olarak etkinleştirilip etkinleştirilmediğini denetler. Bkz. Silme vektörlerini otomatik olarak etkinleştirme.
Delta Lake tablo özelliğini ayarlayarak Delta tablosunda silme vektörleri desteğini etkinleştirebilirsiniz. Silme vektörlerini tablo oluşturma sırasında etkinleştirir veya aşağıdaki örneklerde olduğu gibi var olan bir tabloyu değiştirirsiniz:
CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);
Uyarı
Silme vektörlerini etkinleştirdiğinizde, tablo protokolü yükseltilir. Yükseltmeden sonra tablo, silme vektörlerini desteklemeyen Delta Lake istemcileri tarafından okunamaz. Bkz. Azure Databricks Delta Lake özellik uyumluluğunu nasıl yönetir?.
Databricks Runtime 14.1 ve üzeri sürümlerin silme vektörleri tablosu özelliğini bırakarak diğer Delta istemcileriyle uyumluluğu etkinleştirebilirsiniz. Bkz . Delta tablosu özelliklerini bırakma.
Parquet veri dosyalarına değişiklikleri uygulama
Silme vektörleri, Delta Lake tablosundaki mevcut Parquet veri dosyalarını mantıksal olarak değiştiren geçici silme işlemleri olarak satırlarda yapılan değişiklikleri gösterir. Bu değişiklikler, aşağıdaki olaylardan biri tarafından tetiklenen veri dosyaları yeniden yazıldığında fiziksel olarak uygulanır:
- Tabloda bir
OPTIMIZE
komut çalıştırılır. - Otomatik sıkıştırma, silme vektörüyle bir veri dosyasının yeniden yazılmasını tetikler.
REORG TABLE ... APPLY (PURGE)
tablonun üzerinde çalıştırılır.
Dosya sıkıştırmayla ilgili olayların silme vektörlerinde kaydedilen değişiklikleri çözmek için kesin garantileri yoktur ve hedef veri dosyalarının dosya sıkıştırma için aday olmaması durumunda silme vektörlerinde kaydedilen bazı değişiklikler uygulanamayabilir. REORG TABLE ... APPLY (PURGE)
Silme vektörleri kullanılarak kaydedilen değişikliklerle kayıtları içeren tüm veri dosyalarını yeniden yazar. Bkz . REORG TABLE.
Not
Değiştirilen veriler eski dosyalarda hala var olabilir. Eski dosyaları fiziksel olarak silmek için VACUUM'u çalıştırabilirsiniz. REORG TABLE ... APPLY (PURGE)
tamamlandıktan sonra tablonun yeni bir sürümünü oluşturur. Bu, silinen dosyaları tamamen kaldırmak için işleminizin bekletme eşiği için göz önünde bulundurmanız VACUUM
gereken zaman damgasıdır. Bkz . Vakum ile kullanılmayan veri dosyalarını kaldırma.
Delta istemcileri ile uyumluluk
Azure Databricks, Foton özellikli işlemdeki güncelleştirmeler için tahmine dayalı G/Ç'yi desteklemek için silme vektörlerinden yararlanıyor. Bkz. Güncelleştirmeleri hızlandırmak için tahmine dayalı G/Ç kullanma.
Okuma ve yazma işlemleri için silme vektörlerinden yararlanma desteği istemciye göre değişir.
Aşağıdaki tabloda, silme vektörleri etkinleştirilmiş Delta tablolarını okumak ve yazmak için gerekli istemci sürümleri gösterilir ve hangi yazma işlemlerinin silme vektörlerinden yararlandığı belirtilir:
İstemci | Yazma silme vektörleri | Silme vektörlerini okuma |
---|---|---|
Photon ile Databricks Runtime | MERGE , UPDATE ve DELETE databricks Runtime 12.2 LTS ve üzerini destekler. |
Databricks Runtime 12.2 LTS veya üzerini gerektirir. |
Photon içermeyen Databricks Runtime | Databricks Runtime 12.2 LTS ve üzerini kullanmayı destekler DELETE . Databricks Runtime 14.1 ve üzerini kullanmayı destekler UPDATE . Databricks Runtime 14.3 LTS ve üzerini kullanmayı destekler MERGE . |
Databricks Runtime 12.2 LTS veya üzerini gerektirir. |
OSS Delta Lake ile OSS Apache Spark | OSS Delta 2.4.0 ve üzerini kullanmayı destekler DELETE . OSS Delta 3.0.0 ve üzerini kullanmayı destekler UPDATE . |
OSS Delta 2.3.0 veya üzerini gerektirir. |
Delta Sharing alıcıları | Yazma işlemleri Delta Sharing tablolarında desteklenmez | Databricks: DBR 14.1 veya üzerini gerektirir. Açık kaynak Apache Spark: 3.1 veya üzerini gerektirir delta-sharing-spark . |
Sınırlamalar
- UniForm silme vektörlerini desteklemez.
- Gerçekleştirilmiş görünümler için silme vektörlerini etkinleştirebilirsiniz, ancak Gerçekleştirilmiş görünümde silme vektörlerini devre dışı bırakmak için Gerçekleştirilmiş görünümü bırakmanız ve yeniden oluşturmanız gerekir.
- Silme vektörlerinin bulunduğu bir tablo için bildirim dosyası oluşturamazsınız. Bildirim oluşturmak için komutunu çalıştırın
REORG TABLE ... APPLY (PURGE)
ve hiçbir eşzamanlı yazma işleminin çalışmadığından emin olun. - Silme vektörleri etkin bir tablo için artımlı bildirim dosyaları oluşturamazsınız.