予測 I/O とは

予測I/Oは、データの読み込みと更新を高速化するAzure Databricksの最適化の集合です。

  • 加速読み取りは 、通常は返すよりもはるかに多くのデータをスキャンする選択的なクエリを高速化します。
  • 加速更新では、更新、削除、またはマージによってファイル内の数行のみが変更された場合に書き換えられるデータが減ります。

予測 I/O は、Azure Databricks 上の Photon エンジン専用です。 「Photon とは」を参照してください。

予測I/Oが適用される場合

予測I/Oは自動的に実行されます。 個別のクエリでオンにするわけではありません。 メリット:

予測 I/Oはブルーム フィルターのインデックスも置き換えます。 ブルーム フィルター インデックス (非推奨) を参照してください。

予測 I/O を使用して読み取りを高速化する

予測 I/O は、サポートされるコンピューティングの種類に対するすべての操作のデータ スキャンとフィルター処理のパフォーマンスを高速化するために使用されます。

重要

予測 IO の読み取りは、種類がサーバーレスおよび Pro である SQL ウェアハウスと、Databricks Runtime 11.3 LTS 以降を実行する Photon 高速化クラスターによってサポートされます。

予測I/Oはディープラーニング技術を適用することでスキャン性能を向上させます:

  • データを読み取る最も効率的なアクセスパターンを特定し、実際に必要なデータのみをスキャンします。
  • クエリ結果の生成に必要のない列と行のデコードを排除します。
  • 1 行を照合する選択的クエリで検索条件の確率を計算します。 クエリが実行される間、予測I/Oはこれらの確率を使って次の一致行の位置を予測し、そのデータだけをクラウドストレージから読み込みます。

予測 I/O を使用して更新を高速化する

これらのPhoton対応コンピュートタイプで削除ベクトルが有効になっているすべてのテーブルに対して、更新のための予測I/Oが自動的に使用されます。

  • サーバーレス SQL ウェアハウス。
  • Pro SQL ウェアハウス。
  • Databricks Runtime 14.0 以降を実行しているクラスター。

注

更新の予測 I/O は Databricks Runtime 12.2 LTS 以降でサポートされていますが、Databricks では、パフォーマンスを最大限に高めるために 14.0 以降を使うことをお勧めします。

Databricks の削除ベクトルを参照してください。

重要

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

Delta Lake テーブルのプロパティを設定することで、Delta Lake テーブルの削除ベクトルのサポートを有効にします。 テーブル作成時に削除ベクターを有効にしたり、既存のテーブルを変更したりします。例えば:

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

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

警告

削除ベクトルを有効にすると、テーブル プロトコルのバージョンがアップグレードされます。 アップグレード後、削除ベクターをサポートしていないDelta Lakeクライアントではテーブルが読み取れなくなります。 Delta Lake の機能の互換性とプロトコルに関する記事を参照してください。

削除ベクトルをサポートするクライアントの一覧については、「 クライアントの互換性」を参照してください。

Databricks Runtime 14.1 以降では、他の Delta クライアントとの互換性を有効にするため、削除ベクトル テーブル機能を削除できます。 Delta Lake テーブル機能の削除とテーブル プロトコルのダウングレードに関する記事を参照してください。

予測I/Oは削除ベクトルを活用し、Delta Lakeテーブルのデータ変更時の完全なファイル書き換え頻度を減らすことで更新を加速させます。 予測 I/O では、DELETE、MERGE、UPDATE の各操作が最適化されます。

予測 I/O では、レコードが更新または削除されたときにデータ ファイル内のすべてのレコードを書き換えるのではなく、削除ベクトルを使用して、ターゲット データ ファイルからレコードが削除されたことを示します。 補足データ ファイルが更新を示すために使用されます。

テーブルに対する後続の読み取りは、記録された変更を最新のテーブルバージョンに適用することで、現在のテーブルの状態を更新します。

重要

予測I/Oの更新には、削除ベクトルと同じ制限がすべてあります。 Databricks Runtime 12.2 LTS以降では、以下の制限が適用されます:

  • 削除ベクターが有効になっているテーブルでは、OpenSharing はサポートされていません。
  • 削除ベクトルが存在するテーブルのマニフェスト ファイルを生成することはできません。 REORG TABLE ... APPLY (PURGE)を実行し、マニフェストを生成するために同時書き込み操作が実行されていないことを確認します。
  • 削除ベクトルが有効になっているテーブルのマニフェスト ファイルを増分生成することはできません。