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, , UPDATEve MERGE işlemleri için silme vektörleri etkinleştirildiğinde, DELETEparquet 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 , MERGEve 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

Ö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 tablosu özelliğini ayarlayarak Delta Lake 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, UPDATEve 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 .

Not

Diğer Delta istemcilerinde destek için OSS Delta Lake tümleştirmeleri belgelerine bakın.

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.