このページでは、Azure Databricks 上の Unity カタログ マネージド テーブルのメンテナンス操作を自動的に実行する予測最適化について説明します。
メモ
予測最適化は、2024 年 11 月 11 日以降に作成されたアカウントに対して既定で有効になっています。 Databricks は、2025 年 5 月 7 日に既存のアカウントの有効化を開始しました。 このロールアウトは段階的であり、2026 年 4 月までに完了する予定です。 アカウントが既に有効になっているかどうかを確認するには、「 予測最適化が有効になっているかどうかを確認する」を参照してください。
予測最適化を有効にすると、Databricks は自動的に次の処理を行います。
- メンテナンス操作の恩恵を受けるテーブルを識別し、実行する操作をキューに入れます。
- データがマネージド テーブルに書き込まれるときに統計を収集します。
これにより、不要なメンテナンスの実行と、パフォーマンスの追跡とトラブルシューティングを手動で行う負担がなくなります。
Databricks では、すべての Unity カタログマネージド テーブルに対して予測最適化を推奨します。 たとえば、自動液体クラスタリングでは、データ使用パターンに基づいてデータ レイアウトのインテリジェントな最適化が使用されます。 表に液体クラスタリングを使用するを参照してください。
予測最適化ではどのような操作を行いますか?
予測最適化では、Unity カタログのマネージド テーブルに対して次の操作が実行されます。
| 操作 | 説明 |
|---|---|
OPTIMIZE |
有効なテーブルの増分クラスタリングをトリガーします。 表に液体クラスタリングを使用するを参照してください。 ファイル サイズを最適化することで、クエリのパフォーマンスを向上させます。 「データ ファイル レイアウトを最適化する」を参照してください。 |
VACUUM |
テーブルで参照されなくなったデータ ファイルを削除することで、ストレージ コストを削減します。 「VACUUM を使用して未使用のデータ ファイルを削除する」を参照してください。 |
ANALYZE |
クエリのパフォーマンスを向上させるために、統計の増分更新をトリガーします。 詳細については、ANALYZE TABLEを参照してください。 |
メモ
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 オブジェクト | 権限 |
|---|---|
| アカウント | アカウント管理者 |
| カタログ | カタログ所有者 |
| スキーマ | スキーマの所有者 |
アカウントの予測最適化を有効または無効にする
アカウント管理者は、アカウント内のすべてのメタストアに対して予測最適化を有効にすることができます。 カタログとスキーマは既定でこの設定を継承しますが、どちらのレベルでもオーバーライドできます。
- アカウント コンソールに移動します。
- [設定]、[機能の有効化] の順に移動します。
- [予測の最適化] の横にある必要なオプション (有効など) を選択します。
メモ
- 予測最適化をサポートしていないリージョンのメタストアは有効になっていません。
- アカウント レベルで予測最適化を無効にしても、明示的に有効にしたカタログまたはスキーマでは無効になりません。
カタログまたはスキーマ向けの予測最適化を有効または無効にする
予測最適化は継承モデルを使用します。 カタログに対して有効にすると、そのカタログ内のスキーマも設定を継承し、有効なスキーマ内のテーブルもその設定を継承します。 カタログまたはスキーマの予測最適化を明示的に有効または無効にして、この動作をオーバーライドできます。
メモ
予測最適化は、アカウント レベルで有効にする前に、カタログレベルまたはスキーマ レベルで無効にすることができます。 後でアカウント レベルで予測最適化を有効にすると、それらのオブジェクト内のテーブルに対してブロックされたままになります。
親オブジェクトから継承する予測最適化を有効、無効、またはリセットするには、次の構文を使用します。
ALTER CATALOG [catalog_name] { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION;
ALTER { SCHEMA | DATABASE } schema_name { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION;
予測最適化が有効になっているかどうかを確認する
Predictive Optimization フィールドは、予測最適化が有効になっているかどうかを示す Unity カタログ プロパティです。 設定が親オブジェクトから継承されている場合、フィールド値はこれを示します。
状態を確認するには、次の構文を使用します。
DESCRIBE (CATALOG | SCHEMA | TABLE) EXTENDED name
システム テーブルを使用して予測の最適化を追跡する
Databricks は、予測最適化操作、コスト、および影響を監視するためのシステム テーブル system.storage.predictive_optimization_operations_history を提供します。 「予測最適化システムテーブル参照」を参照してください。
プライベート リンクのエラー メッセージ
システム テーブルが操作を FAILED: PRIVATE_LINK_SETUP_ERROR で失敗としてマークした場合、サーバーレス プライベート リンクが正しく構成されていない可能性があります。
「Azure リソースへのプライベート接続を構成する」を参照してください。
制限事項
予測最適化は、次の種類のテーブルでは実行されません。
- Delta Sharing の受信者としてワークスペースに読み込まれたテーブル
- 外部テーブル