予測I/Oとは?
予測 I/O は、データの読み取りと更新を高速化する Databricks の最適化のコレクションです:
- 読み取りの高速化 は、返されるデータよりもはるかに多くのデータをスキャンするような選択的クエリーを高速化します。
- 高速化された更新 は、更新、削除、またはMergeによってファイル内の数行のみが変更される場合に、書き換えられるデータを削減します。
予測 I/O は、Databricks の Photon エンジン専用です。 Photonとはを参照してください。
予測 IOが適用される場合
予測 I/O は自動的に実行されます。個々のクエリーに対してオンにすることはありません。メリット:
- ServerlessまたはProのSQL Warehouse、あるいはPhoton対応のクラスターでクエリーを実行します。予測 I/O を使用して読み取りを高速化するを参照してください。
- 更新を高速化するには、頻繁に
DELETE、MERGE、またはUPDATE操作を行うテーブルで削除ベクトルを有効にします。予測 I/O を使用して更新を高速化するを参照してください。
Predictive I/Oは、ブルームフィルタのインデックスにも取って代わります。ブルームフィルタのインデックス (非推奨)を参照してください。
読み取り速度を加速するための予測I/Oの活用
予測 I/O は、サポートされているコンピュート タイプに対するすべての操作のデータ スキャンとフィルタリングのパフォーマンスを高速化するために使用されます。
プレディクティブI/Oリードは、SQL ウェアハウスのサーバレスタイプとプロタイプ、およびDatabricks Runtime LTS 11.3 以降を実行するPhoton高速化クラスターでサポートされています。
予測 I/O は、次のディープラーニング技術を適用することでスキャンパフォーマンスを向上させます。
- データを読み取るための最も効率的なアクセスパターンを特定し、実際に必要なデータのみをスキャンします。
- クエリ結果の生成に必要のない列と行のデコードを排除します。
- 選択的なクエリーで、行と一致する検索条件の確率を計算します。クエリーの実行中、予測 I/O はこれらの確率を使用して、次に一致する行が発生する場所を予測し、そのデータのみをクラウドストレージから読み取ります。
予測I/Oを使用して更新を高速化
更新処理における予測I/Oは、次のPhoton対応コンピュートタイプで削除ベクトルが有効になっているすべてのテーブルに対して自動的に使用されます。
- サーバレス SQLウェアハウス.
- プロ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)を実行し、並列書き込み操作が実行されていないことを確認します。 - 削除ベクトルが有効になっているテーブルのマニフェストファイルを増分生成することはできません。