Databricks'te silme vektörleri

Silme vektörleri, Delta Lake ve Apache Iceberg tablolarında DELETE, UPDATE ve MERGE işlemlerini hızlandırır. Silme vektörleri olmadan, tek bir satırı değiştirmek için bu kaydı içeren Parquet dosyasının tamamının yeniden yazılması gerekir. Silme vektörleri bunun yerine satırları meta veride değiştirilmiş olarak işaretler ve okumalar, geçerli tablo durumunu belirlemek için sorgu zamanında silme vektörü girdilerini uygular.

Note

Tahmine dayalı G/Ç güncellemeleri için Photon, silme vektörlerini DELETE, MERGE ve UPDATE işlemlerini hızlandırmak için kullanır. Bkz. Güncelleştirmeleri hızlandırmak için tahmine dayalı G/Ç kullanma.

Prerequisites

Tüm Apache Iceberg v3 tabloları varsayılan olarak silme vektörlerini içerir. Bkz. Apache Iceberg v3 özelliklerini kullanma. Delta Lake tabloları için silme vektörlerini açıkça etkinleştirmeniz gerekir.

Tüm iyileştirmeleri kullanarak silme vektörlerine sahip tablolar yazmak için Databricks Runtime 14.3 LTS ve üzerini kullanın. Bunları okumak için Databricks Runtime 12.2 LTS ve üzerini kullanın.

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.

İstemci uyumluluğu

Azure Databricks, Photon destekli işlemdeki güncelleştirmeler için tahmine dayalı giriş/çıkış'ı 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ör tablolarını okumak ve yazmak için gereken istemci sürümleri listelenmektedir:

Client Silme vektörlerini yaz 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 kullanarak MERGE destekler. 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.
OpenSharing alıcıları OpenSharing tablolarında yazma işlemleri desteklenmez. Azure Databricks Databricks Runtime 14.1 veya üzerini gerektirir. Açık kaynak Apache Spark için 3.1 veya üzeri gerekir delta-sharing-spark .

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

Silme vektörlerini etkinleştirme

Çalışma alanı ayarlarında, SQL ambarı veya Databricks Runtime 14.3 LTS veya üzerini kullandığınızda yeni tablolarda silme vektörlerini etkinleştirebilirsiniz. Varsayılan ayarlar bölgeye göre değişir, bkz. Silme vektörlerini otomatik olarak etkinleştirme.

Hive meta veri deposunda depolanan gerçekleştirilmiş görünümler ve akış tabloları için silme vektörleri varsayılan olarak etkinleştirilmez.

Herhangi bir tablo veya görünümde silme vektörlerini el ile etkinleştirmek veya kaldırmak için table özelliğini kullanın enableDeletionVectors .

Tablo oluştururken veya değiştirirken tabloda silme vektörlerini etkinleştirmek için:

Delta Gölü

CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);

ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);

Buzdağı tablosu

CREATE TABLE <table-name> [options] TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);

ALTER TABLE <table-name> SET TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);

Somutlaştırılmış bir görünümde veya akış tablosunda silme vektörlerini etkinleştirmek ya da kaldırmak için ALTER deyimi kullanamazsınız. CREATE TABLE ifadesini kullanmalısınız.

Warning

Silme vektörlerini etkinleştirdiğinizde Databricks tablo protokollerini yükseltiyor. Yükseltmeden sonra, silme vektör desteği olmayan istemciler tabloyu okuyamaz. Bkz . Delta Lake özellik uyumluluğu ve protokolleri.

Databricks Runtime 14.1 ve üzeri sürümlerin silme vektörleri tablosu özelliğini bırakarak diğer istemcilerle uyumluluğu etkinleştirebilirsiniz. Bkz . Delta Lake tablosu özelliğini bırakma ve tablo protokolünü düşürme.

Veri dosyalarına mantıksal silme uygulayın

Silme vektörleri, satırlardaki değişiklikleri, tablodaki mevcut Parquet veri dosyalarını mantıksal olarak değiştiren geçici silmeler olarak işaretler. Parquet veri dosyalarını fiziksel olarak yeniden yazmak için aşağıdakilerden birini yapın:

  • OPTIMIZE öğesini masanın üzerinde çalıştırın.
  • REORG TABLE ... APPLY (PURGE) öğesini masanın üzerinde çalıştırın. Bu komut, silme vektörü değişiklikleri içeren kayıtları içeren tüm veri dosyalarını yeniden yazar. Bkz. REORG TABLE.
  • Silme vektörüne sahip bir veri dosyasının yeniden yazılmasını tetikleyen otomatik kompaksiyon ile bir yazma işlemi gerçekleştirin.

Dosya sıkıştırma olaylarının silme vektörlerinde kaydedilen değişiklikleri çözmek için kesin garantileri yoktur. Silme vektörlerinde kaydedilen bazı değişiklikler, hedef veri dosyaları dosya sıkıştırma için aday değilse fiziksel olarak uygulanmayabilir.

Eski verileri fiziksel olarak silme

Değiştirilen veriler, temizleme işleminden sonra tablonun eski veri dosyalarında hala var olabilir. Verileri fiziksel olarak kaldırmak, örneğin bulut sağlayıcınızla depolama maliyetlerini azaltmak veya GDPR isteklerine uymak isteyebilirsiniz.

Eski verileri fiziksel olarak silmek için:

  1. REORG TABLE ... APPLY (PURGE) komutunu çalıştırın
  2. VACUUM komutunu, önceki tablo sürümlerindeki dosyaları fiziksel olarak kaldırmak için saklama eşiği temizleme tamamlanma zaman damgası olarak ayarlanmış şekilde çalıştırın. Meta verileri yalnızca silmeleri temizleyerek verilerin yeniden yazılmasını zorlamak için bkz.

Büyük tabloların performansını artırın

Büyük tablolardaki temizleme işlemlerinin performansını artırmak için spark.databricks.delta.reorg.purgeMode öğesini rows olarak ayarlayın.

Örneğin, verileri REORG TABLE ... APPLY (PURGE) ile manuel olarak temizlediğinizde veya silme vektörlerini ALTER TABLE DROP FEATURE deletionVectors ile kaldırdığınızda bu yapılandırmayı ayarlayın.

varsayılan olarak, spark.databricks.delta.reorg.purgeModeallolarak ayarlanır. Temizleme işlemlerinin hem bırakılan sütun verilerini hem de geçici olarak silinen satırları denetlemek için tüm Parquet dosya alt bilgilerini taraması gerektiğinden, büyük tablolarda bu işlem yavaş olabilir.

rows değeri, işlemi yalnızca geçici olarak silinmiş satırlara sahip dosyaları işlemekle sınırlar. Büyük tablolarda, birçok dosya geçici olarak silinmiş satırlar içermiyorsa ve tabloda bırakılan sütun yoksa bu durum performansı artırabilir.

Sınırlamalar

  • Iceberg v2 okumaları silme vektörlerini desteklemiyor. Apache Iceberg v3, Iceberg okumaları etkin olduğu tablolarda silme vektörlerini destekler. Bkz. Apache Iceberg v3 özelliklerini kullanma.
  • 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. REORG ifadesini gönderirken, eşzamanlı hiçbir yazma işleminin devam etmediğini doğrulamanı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=trueayarlayarak).
  • Gerçekleştirilmiş bir görünümde veya Akış tablosunda silme vektörlerini etkinleştirir ve ardından silme vektörlerini kaldırırsanız, silme vektörleri görünüme veya tabloya gelecek yazma işlemlerine uygulanmaz, ancak mevcut silme vektörleri kalır.
  • Gerçekleştirilmiş bir görünümde veya Akış tablosunda silme vektörlerini etkinleştirdikten sonra silme vektörlerini kapatsanız bile tablo protokollerini düşüremezsiniz.