Unity Catalog マネージドテーブル向け予測的最適化
このページでは、 Databricks上のUnity Catalogマネージド テーブルのメンテナンス操作を自動的に実行する予測的最適化について説明します。
予測的最適化は、2024 年 11 月 11 日以降に作成されたアカウントに対して安全により有効になります。 Databricks は 2025 年 5 月 7 日より既存アカウントの有効化を開始しました。この展開は段階的に行われ、2026 年 4 月までに完了する予定です。アカウントがすでに有効になっているかどうかを確認するには、 「予測的最適化が有効かどうかを確認する」を参照してください。
予測的最適化を有効にすると、 Databricks は自動的に次の処理を行います。
- メンテナンス操作の恩恵を受けるテーブルを識別し、それらの操作を実行するキューに追加します。
- データがマネージドテーブルに書き込まれるときに統計を収集します。
これにより、不要なメンテナンスの実行がなくなり、パフォーマンスを手動で追跡およびトラブルシューティングする負担も軽減されます。
Databricks 、すべてのUnity Catalogマネージド テーブルに対して予測的最適化を推奨します。 たとえば、自動リキッドクラスタリングでは、データ使用パターンに基づいてデータ レイアウトをインテリジェントに最適化します。 「テーブルにリキッドクラスタリングを使用する」を参照してください。
予測的最適化 はどのような操作を実行しますか?
予測的最適化Unity Catalogマネージドテーブルに対して次の操作を実行します。
オペレーション | 説明 |
|---|---|
| 有効なテーブルのインクリメンタル・クラスタリングをトリガーします。 テーブルにリキッドクラスタリングを使用するを参照してください。 ファイルサイズを最適化することで、クエリのパフォーマンスを向上させます。 データファイルレイアウトの最適化を参照してください。 |
| テーブルで参照されなくなったデータファイルを削除することにより、ストレージコストを削減します。 「 vacuumを使用した未使用のデータファイルの削除」を参照してください。 |
| クエリのパフォーマンスを向上させるために統計の増分更新をトリガーします。ANALYZE TABLE … コンピュート STATISTICS」を参照してください。 |
OPTIMIZE 予測的最適化によって実行される場合、 ZORDERは実行されません。 Z-Orderを使用するテーブルでは、予測的最適化はZ-orderedファイルを無視します。
自動リキッドクラスタリングが有効になっている場合、予測的最適化では、データのクラスタリングの前に新しいクラスタリングキーが選択されることがあります。 自動リキッドクラスタリングを参照してください。
VACUUM保持期間はdelta.deletedFileRetentionDurationテーブル プロパティによって決定され、デフォルトでは 7 日間に設定されます。VACUUM 、そのウィンドウ内の Delta テーブル バージョンによって参照されなくなったデータ ファイルを削除します。データを長期間保持するには (たとえば、拡張タイムトラベルをサポートするため)、予測的最適化を有効にする前にこのプロパティを設定します。
ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');
コンピュートと課金
予測的最適化 ジョブのサーバレス コンピュートを使用した実行ANALYZE 、 OPTIMIZE 、およびVACUUMオペレーション。 あなたのアカウントには、サーバレス ジョブSKUを使用してこのコンピュートに対して請求されます。
Databricksマネージドサービスの価格をご覧ください。 「システム テーブルによる予測的最適化の追跡」を参照してください。
前提条件
予測的最適化を使用するには、次の要件を満たす必要があります。
- Databricks ワークスペースは、 サポートされているリージョン のPremium プラン以上 である必要があります。
- SQLウェアハウスまたはDatabricks Runtime 12.2 LTS以降を使用する必要があります。
- マネージドテーブル Unity Catalog のみがサポートされています。
予測的最適化の有効化
予測的最適化は、アカウント、カタログ、またはスキーマに対して有効にできます。 すべてのUnity Catalogマネージドテーブルはアカウント値を確実に継承します。 カタログ レベルまたはスキーマ レベルでアカウントのデフォルトを上書きできます。
予測的最適化を有効または無効にするには、次の権限が必要です。
Unity Catalog オブジェクト | 権限 |
|---|---|
アカウント | アカウント管理者 |
カタログ | カタログ所有者 |
スキーマ | スキーマの所有者 |
アカウントで予測的最適化を有効化、無効化する
アカウント管理者は、アカウント内のすべてのメタストアに対して予測的最適化を有効にすることができます。 カタログとスキーマはデフォルトでこの設定を継承しますが、どちらのレベルでも上書きできます。
- アカウント コンソールに移動します。
- 設定 、 機能の有効化 の順に移動します。
- [予測的最適化] の横にある必要なオプション (たとえば、 [有効] ) を選択します。
- 予測的最適化をサポートしていないリージョンのメタストアは有効になっていません。
- アカウントレベルで予測的最適化を無効にしても、特に有効にしたカタログまたはスキーマでは無効になりません。
カタログまたはスキーマの予測的最適化を有効または無効にする
予測的最適化では継承モデルを使用します。 カタログに対して有効にすると、そのカタログ内のスキーマが設定を継承し、有効なスキーマ内のテーブルも設定を継承します。カタログまたはスキーマの予測的最適化を明示的に有効または無効にして、この動作をオーバーライドできます。
予測的最適化をアカウント レベルで有効にする前に、カタログ レベルまたはスキーマ レベルで無効にすることができます。 予測的最適化が後でアカウント レベルで有効になった場合、それらのオブジェクトのテーブルに対してブロックされたままになります。
親オブジェクトからの継承を有効、無効、またはリセット予測的最適化を行うには、次の構文を使用します。
ALTER CATALOG [catalog_name] { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION;
ALTER { SCHEMA | DATABASE } schema_name { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION;
予測的最適化が有効かどうかを確認する
Predictive Optimizationフィールドは、予測的最適化が有効かどうかを示すUnity Catalogプロパティです。 設定が親オブジェクトから継承されている場合、フィールド値はこれを示します。
ステータスを確認するには、次の構文を使用します。
DESCRIBE (CATALOG | SCHEMA | TABLE) EXTENDED name
システムテーブルによる予測的最適化の追跡
Databricks は、予測的最適化操作、コスト、および影響に対する可観測性のためのシステムテーブル system.storage.predictive_optimization_operations_historyを提供します。 予測的最適化 システムテーブル リファレンスを参照してください。
制限
予測的最適化は、次のテーブル タイプでは実行されません。
- Delta Sharing受信者としてワークスペースにロードされたテーブル
- 外部テーブル