Unity Catalog マネージドテーブルの予測的最適化

注:

2024年11月11日以降に作成されたすべてのアカウントについて、 Databricks はデフォルトによる予測的最適化を有効にします。

予測的最適化により、DatabricksのUnity Catalog マネージドテーブルのメンテナンスオペレーションを手動で管理する必要がなくなります。

予測的最適化を有効にすると、 Databricks は自動的に次の処理を行います。

  • メンテナンス操作の恩恵を受けるテーブルを特定し、これらの操作を実行するキューに入れます。

  • データがマネージドテーブルに書き込まれるときに統計を収集します。

メンテナンス操作は必要に応じて実行されるため、メンテナンス操作の不要な実行と、パフォーマンスの追跡とトラブルシューティングに関連する負担の両方を排除します。

重要

予測的最適化はUnity Catalog マネージドテーブルに対してのみ実行されます。

予測的最適化は、 Databricks SQL または Delta Live Tables パイプラインを使用して作成されたストリーミングテーブルまたはマテリアライズドビューでは実行されません。

予測的最適化は、すべての地域で利用できるわけではありません。 「AI と機械学習機能の可用性」を参照してください。

予測的最適化はどのような操作を実行しますか?

予測的最適化が有効なテーブルに対して、次のオペレーションを自動的に実行します。

オペレーション

説明

OPTIMIZE (1)

有効なテーブルの増分クラスタリングをトリガーします。 Deltaテーブルにリキッドクラスタリングを使用するを参照してください。

ファイルサイズを最適化することで、クエリのパフォーマンスを向上させます。 データファイルのレイアウトを最適化するを参照してください。

VACUUM

テーブルによって参照されなくなったデータ ファイルを削除することで、ストレージ コストを削減します。 vacuumで未使用のデータファイルを削除するを参照してください。

ANALYZE

統計の増分更新をトリガーして、クエリの性能を向上させます。 ANALYZE TABLEを参照してください。

(1) OPTIMIZE 予測的最適化で実行した場合、 ZORDER は実行されません。

警告

VACUUM コマンドの保持期間は、delta.deletedFileRetentionDuration table プロパティ (既定値は 7 日間) によって決まります。つまり VACUUM 過去 7 日間に Delta テーブル バージョンによって参照されなくなったデータ ファイルが削除されます。 データをより長く保持する場合 (タイムトラベルを長期間サポートする場合など)、次の例のように、予測的最適化を有効にする前に、このテーブル プロパティを適切に設定する必要があります。

ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');

予測的最適化はどこで実行されますか?

予測的最適化は、 ANALYZEOPTIMIZE、および VACUUM 操作からメリットが得られるテーブルを特定し、サーバレス コンピュート for ジョブを使用して実行するようにキューに入れます。 お客様のアカウントは、マネージド サービスに固有の SKU を使用して、これらのワークロードに関連付けられているコンピュートに対して Databricks請求されます。 Databricks マネージドサービスの価格を参照してください。Databricks は、予測的最適化の操作、コスト、および影響に対する可観測性のためのシステムテーブルを提供します。 システムテーブルを使用して予測的最適化を追跡するを参照してください。

予測的最適化の前提条件

予測的最適化を有効にするには、次の要件を満たす必要があります。

予測的最適化を有効にする

アカウント、カタログ、またはスキーマの予測的最適化を有効にできます。 すべての Unity Catalog マネージドテーブルは、デフォルトによってアカウント値を継承します。 カタログまたはスキーマのアカウント デフォルトをオーバーライドして、そのレベルで予測的最適化を有効または無効にすることができます。

注:

2024年11月11日以降に作成されたアカウントの場合、デフォルトによってアカウントに対して予測的最適化が有効になります。

指定したレベルで予測的最適化を有効または無効にするには、次の権限が必要です。

Unity Catalog オブジェクト

権限

アカウント

アカウント管理者

カタログ

カタログ所有者

スキーマ

スキーマ所有者

注:

予測的最適化を初めて有効にすると、Databricks アカウント内にサービスプリンシパルが自動的に作成されます。 Databricks は、このサービスプリンシパルを使用して、要求されたメンテナンス操作を実行します。 サービスプリンシパルの管理を参照してください。

Enable or disable predictistic optimization for your アカウント

アカウント管理者は、次の手順を実行して、アカウント内のすべてのメタストアに対して予測的最適化を有効にできます。 アカウント内のオブジェクトは、デフォルトでこの設定を継承します (ただし、この設定はカタログ レベルまたはスキーマ レベルで上書きできます)。

  1. アカウントコンソールにアクセスします。

  2. [ 設定]、[ 機能の有効化] の順に移動します。

  3. 「予測的最適化」の横にある使用するオプション (「有効」など) を選択します。

注:

  • 予測的最適化をサポートしていないリージョンのメタストアは有効になっていません。

  • アカウントレベルで予測的最適化を無効にしても、特に有効にしたカタログまたはスキーマでは無効になりません。

カタログまたはスキーマの予測的最適化を有効または無効にする

予測的最適化は、継承モデルを使用します。 カタログに対して有効にすると、スキーマはプロパティを継承します。 有効なスキーマ内のテーブルは、予測的最適化を継承します。 この継承動作をオーバーライドするには、カタログまたはスキーマの予測的最適化を明示的に有効または無効にします。

注:

予測的最適化をアカウント レベルで有効にする前に、カタログ レベルまたはスキーマ レベルで無効にすることができます。 後でアカウントで予測的最適化が有効になった場合、これらのオブジェクトのテーブルに対してブロックされます。

次の構文を使用して、予測的最適化を有効または無効にするか、親オブジェクトからの継承のデフォルトに戻ります。

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予測的最適化操作の履歴を追跡するためのシステムテーブルを提供します。 予測的最適化システムテーブルリファレンスを参照してください。

制限事項

予測的最適化は、一部の地域ではご利用いただけません。 Databricks のクラウドとリージョンを参照してください。

予測的最適化は、 Z-Orderを使用するテーブルでは OPTIMIZE コマンドを実行しません。

予測的最適化では、ファイル保持期間が 7 日未満に設定されているテーブルに対しては操作を実行しませVACUUMタイムトラベルクエリのデータ保持を構成するを参照してください。

予測的最適化では、次のテーブルに対してメンテナンス操作は実行されません。