Silme vektörleri nedir?
Silme vektörleri, Delta Lake tablolarında etkinleştirebileceğiniz 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, , DELETE
ve UPDATE
işlemleri için silme vektörleri etkinleştirildiğinde, MERGE
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 silmeleri en son tablo sürümüne uygulayarak geçerli tablo durumunu çözer.
Databricks, tüm iyileştirmeleri kullanmak ü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 , DELETE
ve MERGE
işlemlerini hızlandırmaktadırUPDATE
. Silme vektörlerini okumayı destekleyen tüm istemciler, tahmine dayalı G/Ç'nin bu güncelleştirmeleri üretip oluşturmadığına 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.
Ö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.
Silme vektörlerinin otomatik olarak etkinleştirilmesini denetlemeye yönelik çalışma alanı ayarı kullanılırsa, tablo türleri için seçilen seçeneğe bağlı olarak, SQL ambarı veya Databricks Runtime 14.1 veya üzerini kullanarak yeni bir tablo oluşturduğunuzda silme vektörleri varsayılan olarak etkinleştirilir. Gerçekleştirilmiş görünümler veya Akış tabloları oluşturduğunuzda silme vektörleri varsayılan olarak etkinleştirilmez ve gerçekleştirilmiş bir görünüm veya Akış tablosu oluşturduğunuzda el ile etkinleştirilmesi gerekir.
Tablo veya görünümde silme vektörleri desteğini el ile etkinleştirmek için tablo özelliğini kullanın delta.enableDeletionVectors
. Tabloyu oluştururken veya değiştirirken bir delta tablosunda silme vektörlerini el ile etkinleştirebilirsiniz. Silme vektörlerini gerçekleştirilmiş görünümde veya Akış tablosunda yalnızca gerçekleştirilmiş görünümü veya Akış tablosunu oluşturduğunuzda el ile etkinleştirebilirsiniz. Gerçekleştirilmiş görünümde ALTER
veya Akış tablosunda silme vektörlerini etkinleştirmek için bir deyimi kullanamazsınız.
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 kaldırma.
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 veri dosyalarının yeniden yazılmasına neden olduğunda 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 çalıştırabilirsiniz.
REORG TABLE ... APPLY (PURGE)
tamamlandığında tablonun yeni bir sürümünü oluşturur. Bu tamamlanma süresi, 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. Vakumile kullanılmayan veri dosyalarını kaldırma.
Azure Databricks, Foton özellikli işlemdeki güncelleştirmeler için tahmine dayalı G/Ç'yi desteklemek için silme vektörlerini kullanır. Bkz. Güncelleştirmeleri hızlandırmak için tahmine dayalı G/Ç kullanma.
Okuma ve yazma işlemleri için silme vektörlerini kullanma 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örlerini kullandığını belirtir:
İ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 . |
- UniForm silme vektörlerini desteklemez.
- Silme vektörlerini kullanan dosyaları olan bir tablo için bildirim dosyası oluşturmak üzere GENERATE deyimi kullanamazsınız. Bildirim oluşturmak için önce bir REORG TABLE çalıştırın... APPLY (PURGE) deyimi ve ardından
GENERATE
deyimini çalıştırın. deyimini gönderirken hiçbir eşzamanlı yazma işlemininREORG
çalışmadığından emin olmanız gerekir. - Silme vektörleri etkinleştirilmiş bir tablo için artımlı bildirim dosyaları oluşturamazsınız (örneğin, tablo özelliğini
delta.compatibility.symlinkFormatManifest.enabled=true
ayarlayarak). - Gerçekleştirilmiş bir görünümde veya Akış tablosunda silme vektörlerini etkinleştirir ve daha sonra silme vektörlerini devre dışı bırakırsanız, görünüme veya tabloya gelecek yazma işlemleri silme vektörlerini kullanmaz, ancak var olan silme vektörleri kaldırılmaz.
- Gerçekleştirilmiş bir görünümde veya Akış tablosunda silme vektörlerini etkinleştirdikten sonra tablo protokollerini düşüremezsiniz. Etkinleştirdikten sonra, silme vektörlerini görünümde veya tabloda devre dışı bıraksanız bile silme vektörleri için tablo özelliği kaldırılamaz.