削除ベクトルとは何ですか?

削除は、Delta Lake テーブルで有効にできるストレージ最適化機能です。 デフォルトでは、データ ファイル内の 1 行が削除されると、そのレコードを含む Parquet ファイル全体を書き直す必要があります。 テーブルに対して削除が有効になっている場合、 DELETEUPDATE 、およびMERGEの操作は、Parquet ファイルを書き換えることなく、削除または変更されたとして既存の行をマークするために削除を使用します。 テーブルに対する後続の読み取りでは、削除ベクトルによって示された削除を最新のテーブル バージョンに適用することにより、現在のテーブル状態が解決されます。

Databricks では、すべての最適化を活用するために、削除ベクトルを含むテーブルを書き込むには、Databricks Runtime 14.3 LTS 以降を使用することをお勧めします。 Databricks Runtime 12.2 LTS 以降では、削除ベクトルが有効になっているテーブルを読み取ることができます。

Databricks Runtime 14.2 以降では、削除ベクトルを含むテーブルで行レベルのコンカレンシーがサポートされています。 「行レベルの同時実行性との書き込みの競合」を参照してください。

Photonは、予測I/O更新に削除ベクトルを活用し、 DELETEMERGE、および UPDATE 操作を加速します。 削除ベクトルの読み取りをサポートするすべてのクライアントは、これらの更新が予測 I/O によって生成されたかどうかに関係なく、削除ベクトルを生成した更新プログラムを読み取ることができます。 「 予測 I/O を使用して更新を高速化する」を参照してください。

削除ベクトル を有効にする

重要

ワークスペース管理者設定は、新しい Delta テーブルに対して削除ベクトルが自動的に有効になるかどうかを制御します。 「削除ベクトルの自動有効化」を参照してください。

Delta Lakeテーブルで削除ベクトルのサポートを有効にするには、Delta Lake テーブルプロパティを設定します。次の例のように、テーブルの作成時に削除ベクトルを有効にするか、既存のテーブルを変更します。

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

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

警告

削除ベクトルを有効にすると、テーブルプロトコルがアップグレードされます。 アップグレード後、削除ベクトルをサポートしていない Delta Lake クライアントではテーブルを読み取ることができなくなります。 「Databricks が Delta Lake 機能の互換性を管理する方法」を参照してください。

Databricks Runtime 14.1 以降では、削除ベクトル テーブル機能を削除して、他の Delta クライアントとの互換性を有効にすることができます。「ドロップ Delta テーブル フィーチャ」をご参照ください。

Parquet データ ファイル への変更の適用

削除ベクトルは、Delta Lake テーブル内の既存の Parquet データ ファイルを論理的に変更する論理的な削除として行への変更を示します。 これらの変更は、次のいずれかのイベントによってトリガーされるように、データ ファイルが書き換えられるときに物理的に適用されます。

  • テーブルに対して OPTIMIZE コマンドが実行されます。

  • 自動圧縮は、削除ベクトルを使用してデータ ファイルの書き換えをトリガーします。

  • REORG TABLE ... APPLY (PURGE) テーブルに対して実行されます。

ファイル圧縮に関連するイベントには、削除ベクトルに記録された変更を解決するための厳密な保証はなく、ターゲットデータファイルがファイル圧縮の候補にならない場合、削除ベクトルに記録された一部の変更は適用されない可能性があります。 REORG TABLE ... APPLY (PURGE) は、削除ベクトルを使用して記録された変更を含むレコードを含むすべてのデータファイルを書き換えます。 再編成表を参照してください。

変更されたデータは、古いファイルにまだ存在している可能性があります。 VACUUM を実行すると、古いファイルを物理的に削除できます。REORG TABLE ... APPLY (PURGE) 、完了時に新しいバージョンのテーブルを作成します。これは、削除されたファイルを完全に削除するために VACUUM 操作の保持しきい値として考慮する必要があるタイムスタンプです。 未使用のデータファイルをバキュームで削除するを参照してください。

Deltaクライアントとの互換性

Databricks は、削除ベクトルを活用して、Photon 対応コンピュートの更新のための予測 I/O を強化します。 「 予測 I/O を使用して更新を高速化する」を参照してください。

読み取りと書き込みに削除ベクトルを利用するためのサポートは、クライアントによって異なります。

次の表は、削除ベクトルが有効になっている Delta テーブルの読み取りと書き込みに必要なクライアント バージョンを示し、削除ベクトルを利用する書き込み操作を指定します。

クライアント

削除ベクトルの書き込み

読み取り削除ベクトル

Databricks Runtime と Photon

Databricks Runtime 12.2 LTS 以降を使用してMERGEUPDATE 、およびDELETEをサポートします。

Databricks Runtime 12.2 LTS 以上が必要です。

Photon を使用しない Databricks Runtime

Databricks Runtime 12.2 LTS 以降を使用してDELETEをサポートします。 Databricks Runtime 14.1 以降を使用してUPDATEをサポートします。 Databricks Runtime 14.3 LTS 以降を使用してMERGEをサポートします。

Databricks Runtime 12.2 LTS 以上が必要です。

OSS Apache Spark と OSS Delta Lake

OSS Delta 2.4.0 以降を使用した DELETE をサポートします。 OSS Delta 3.0.0 を使用した UPDATE をサポート 以上。

OSS Delta 2.3.0 以降が必要です。

Delta Sharing 受信者

Delta Sharingテーブルでは書き込みはサポートされていません

Databricks: DBR 14.1 以降が必要です。 オープンソースの Apache Spark: delta-sharing-spark 3.1 以降が必要です。

他の Delta クライアントでのサポートについては、 OSS Delta Lake 統合のドキュメントを参照してください。

制限

  • UniForm は削除ベクトルをサポートしていません。

  • マテリアライズド ビューの削除を有効にすることができますが、マテリアライズド ビューの削除を無効にするには、マテリアライズド ビューを削除して再作成する必要があります。

  • 削除が存在するテーブルのマニフェスト ファイルを生成することはできません。 マニフェストを生成するには、 REORG TABLE ... APPLY (PURGE)を実行し、ライナー書き込み操作が実行されていないことを確認します。

  • 削除が有効になっているテーブルのマニフェスト ファイルを増分生成することはできません。