予測最適化は、Azure Databricks上の Unity カタログ マネージド テーブル (Delta Lake and Iceberg) でOPTIMIZE、VACUUM、およびANALYZEを自動的に実行し、手動でのメンテナンスとパフォーマンスの問題の追跡に費やされた時間を排除します。
メモ
予測最適化は、2024 年 11 月 11 日以降に作成されたアカウントに対して既定で有効になっています。 Databricks では、段階的なロールアウトで既存のアカウントを有効にしています。 このロールアウトは、2026 年 8 月までに完了する予定です。 アカウントが既に有効になっているかどうかを確認するには、「 予測最適化が有効になっているかどうかを確認する」を参照してください。
予測最適化を有効にすると、Databricks は自動的に次の処理を行います。
- メンテナンス操作の恩恵を受けるテーブルを識別し、実行する操作をキューに入れます。
- データがマネージド テーブルに書き込まれるときに統計を収集します。
これにより、不要なメンテナンスの実行と、パフォーマンスの追跡とトラブルシューティングを手動で行う負担がなくなります。
Databricks では、すべての Unity カタログマネージド テーブルに対して予測最適化を推奨します。 たとえば、自動液体クラスタリングでは、データ使用パターンに基づいてデータ レイアウトのインテリジェントな最適化が使用されます。 表に液体クラスタリングを使用するを参照してください。
予測最適化ではどのような操作を行いますか?
予測最適化では、Unity カタログのマネージド テーブルに対して次の操作が実行されます。
| 操作 | 説明 |
|---|---|
OPTIMIZE |
有効なテーブルの増分クラスタリングをトリガーします。 表に液体クラスタリングを使用するを参照してください。 ファイル サイズを最適化することで、クエリのパフォーマンスを向上させます。 「データ ファイル レイアウトを最適化する」を参照してください。 |
VACUUM |
テーブルで参照されなくなったデータ ファイルを削除することで、ストレージ コストを削減します。 「VACUUM を使用して未使用のデータ ファイルを削除する」を参照してください。 |
ANALYZE |
テーブルをスキャンし、統計を収集してクエリのパフォーマンスを向上させます。 詳細については、ANALYZE TABLEを参照してください。 予測最適化によって収集された統計を削除するには、ANALYZE TABLE… DROP STATISTICS を参照してください。 |
メモ
OPTIMIZE は、予測最適化によって実行されるときに ZORDER を実行しません。 Z オーダーを使用するテーブルでは、予測最適化は Z オーダーファイルを無視します。
自動液体クラスタリングが有効になっている場合、予測最適化では、データをクラスタリングする前に新しいクラスタリング キーが選択される可能性があります。 自動液体クラスタリングを参照してください。
警告
VACUUMのリテンション期間は、既定で 7 日間のdelta.deletedFileRetentionDuration テーブル プロパティによって決まります。
VACUUM は、そのウィンドウ内の Delta テーブル バージョンによって参照されなくなったデータ ファイルを削除します。 データを長期間保持するには (たとえば、延長時間の移動をサポートするために)、予測最適化を有効にする前に、このプロパティを設定します。
ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');
コンピューティングと課金
予測最適化は、ジョブのサーバーレス コンピューティングを使用して、 ANALYZE、 OPTIMIZE、および VACUUM 操作を実行します。 アカウントは、サーバーレス ジョブ SKU に基づいてコンピューティングの処理料金が請求されます。
Databricks 管理サービスの価格を参照してください。 システム テーブルを使用した予測最適化の追跡を参照してください。
前提条件
予測最適化を使用するには、次の要件を満たす必要があります。
- Azure Databricks ワークスペースは、サポートされているリージョンの Premium プラン上にある必要があります。
- SQL ウェアハウスまたは Databricks Runtime 12.2 LTS 以降を使用する必要があります。
- Unity Catalog マネージド テーブルのみがサポートされています。
- ストレージ アカウントにプライベート接続が必要な場合は、サーバーレス プライベート接続を構成します。 「Azure リソースへのプライベート接続を構成する」を参照してください。
予測最適化を有効にする
アカウント、カタログ、スキーマ、またはテーブルの予測最適化を有効にすることができます。 すべての Unity カタログマネージド テーブルは、既定でアカウント値を継承します。 アカウントの既定値は、カタログ、スキーマ、またはテーブル レベルでオーバーライドできます。
予測最適化を有効または無効にするには、次の特権が必要です。
| Unity Catalog オブジェクト | 権限 |
|---|---|
| アカウント | アカウント管理者 |
| カタログ | カタログ所有者、またはカタログに対する MANAGE 権限を持つユーザー |
| スキーマ | スキーマ所有者、またはスキーマに対する MANAGE 権限を持つユーザー |
| テーブル | テーブルの所有者、またはテーブルに対する MANAGE 権限を持つユーザー |
アカウントの予測最適化を有効または無効にする
アカウント管理者は、アカウント内のすべてのメタストアに対して予測最適化を有効にすることができます。 カタログとスキーマは既定でこの設定を継承しますが、どちらのレベルでもオーバーライドできます。
- アカウント コンソールに移動します。
- [設定]、[機能の有効化] の順に移動します。
- [予測の最適化] の横にある必要なオプション (有効など) を選択します。
メモ
- 予測最適化をサポートしていないリージョンのメタストアは有効になっていません。
- アカウント レベルで予測最適化を無効にしても、明示的に有効にしたカタログまたはスキーマでは無効になりません。
カタログ、スキーマ、またはテーブルの予測最適化を有効または無効にする
予測最適化は継承モデルを使用します。 カタログに対して有効にすると、そのカタログ内のスキーマも設定を継承し、有効なスキーマ内のテーブルもその設定を継承します。 カタログ、スキーマ、またはテーブルの予測最適化を明示的に有効または無効にして、この動作をオーバーライドできます。
メモ
予測最適化は、アカウント レベルで有効にする前に、カタログ、スキーマ、またはテーブル レベルで無効にすることができます。 予測最適化が後でアカウント レベルで有効になった場合、明示的に無効にしたオブジェクトに対してはブロックされたままになります。
親オブジェクトから継承する予測最適化を有効、無効、またはリセットするには、次の構文を使用します。
ALTER CATALOG [catalog_name] { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION;
ALTER { SCHEMA | DATABASE } schema_name { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION;
ALTER TABLE table_name { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION;
ALTER TABLEを参照してください。
予測最適化が有効になっているかどうかを確認する
Predictive Optimization フィールドは、予測最適化が有効になっているかどうかを示す Unity カタログ プロパティです。 設定が親オブジェクトから継承されている場合、フィールド値はこれを示します。
状態を確認するには、次の構文を使用します。
DESCRIBE (CATALOG | SCHEMA | TABLE) EXTENDED name
予測最適化でテーブルがスキップされた理由を確認する
Databricks Runtime 18 以降では、予測最適化によってマネージド テーブルが評価された後、カタログ エクスプローラーの [ 履歴 ] タブを使用して、操作がスキップされた理由を確認します。 結果が表示されるまでに最大 24 時間かかる場合があります。
カタログ エクスプローラーの [履歴] タブを使用する
スキップの理由は、カタログ エクスプローラーのテーブルの [ 履歴 ] タブで確認できます。 [ 操作 ] 列の [自動] ラベルは操作が実行されたことを示し、[ 未適用 ] ラベルは操作がスキップされたことを示します。 自動ラベルには、予測の最適化と、ストリーミング自動圧縮などのその他の自動操作が含まれています。
スキップの理由を表示するには、[操作] 列の [未適用] ラベルを持つ行をクリックします。
カタログ エクスプローラーに表示される自動操作の種類を次の表に示します。
| カタログ エクスプローラーの操作 | 説明 |
|---|---|
OPTIMIZE |
クエリパフォーマンスを向上させるためのファイル圧縮、または増分液体クラスタリング |
AUTO LIQUID |
液体クラスタリング キーの評価または進化 |
VACUUM |
テーブルによって参照されなくなったデータ ファイルの削除 |
システム テーブルを使用して予測の最適化を追跡する
Databricks は、予測最適化操作、コスト、および影響を監視するためのシステム テーブル system.storage.predictive_optimization_operations_history を提供します。 「予測最適化システムテーブル参照」を参照してください。
プライベート リンクのエラー メッセージ
システム テーブルが操作を FAILED: PRIVATE_LINK_SETUP_ERROR で失敗としてマークした場合、サーバーレス プライベート リンクが正しく構成されていない可能性があります。
「Azure リソースへのプライベート接続を構成する」を参照してください。
制限事項
予測最適化は、次の種類のテーブルでは実行されません。
- OpenSharing の受信者としてワークスペースに読み込まれたテーブル
- 外部テーブル