Delta Lake の予測的最適化

プレビュー

この機能はパブリックプレビュー段階です。

予測的最適化により、Databricks の Delta テーブルのメンテナンス操作を手動で管理する必要がなくなります。

予測的最適化を有効にすると、Databricks はメンテナンス操作の恩恵を受けるテーブルを自動的に識別し、ユーザーのために実行します。 メンテナンス操作は必要な場合にのみ実行されるため、メンテナンス操作の不要な実行と、パフォーマンスの追跡とトラブルシューティングに関連する負担の両方を排除します。

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

予測的最適化では、有効な Delta テーブルに対して次の操作が自動的に実行されます。

オペレーション

説明

OPTIMIZE

ファイルサイズを最適化することでクエリーのパフォーマンスを向上させます。 「 Delta LakeでOPTIMIZEによりデータファイルを圧縮する」を参照してください。

VACUUM

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

注:

OPTIMIZE 予測的最適化で実行 ZORDER 実行されません。

警告

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

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

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

予測的最適化は、 OPTIMIZE 操作と VACUUM 操作の恩恵を受けるテーブルを識別し、ジョブコンピュートを使用して実行するためにキューに入れます。 アカウントは、Databricksマネージド サービスに固有の SKU を使用して、これらのワークロードに関連付けられているコンピュートに対して課金されます。 Databricks マネージドサービスの価格を参照してください。Databricks には、予測的最適化操作、コスト、影響に関する監視のためのシステム テーブルが用意されています。 「システム テーブルを使用した予測的最適化の追跡」を参照してください。

注:

予測的最適化は、リキッドクラスタリングを使用するテーブルに対して OPTIMIZE コマンドを実行しません。

予測的最適化の前提条件

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

  • Databricks ワークスペースは、予測的最適化をサポートするリージョンの Premium プラン以上 である必要があります。 「Databricks のクラウドとリージョン」を参照してください。

  • 予測的最適化を有効にする場合は、SQLウェアハウスまたは Databricks Runtime 12.2 LTS 以降を使用する必要があります。

  • Unity Catalogマネージド テーブルのみがサポートされます。

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

アカウントレベルで予測的最適化を有効にする必要があります。

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

Unity Catalog オブジェクト

権限

アカウント

アカウント管理者

カタログ

カタログ所有者

スキーマ

スキーマ所有者

注:

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

アカウントの予測的最適化を有効にする

アカウント管理者は、次の手順を実行して、アカウント内のすべてのメタストアの予測的最適化を有効にする必要があります。

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

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

  3. [予測的最適化] の横にある [有効] を選択します。

注:

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

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

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

注:

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

次の構文を使用して、予測的最適化を有効または無効にします。

ALTER CATALOG [catalog_name] {ENABLE | DISABLE} PREDICTIVE OPTIMIZATION;
ALTER {SCHEMA | DATABASE} schema_name {ENABLE | DISABLE} PREDICTIVE OPTIMIZATION;

予測的最適化が有効になっているかどうかを確認する

Predictive Optimization フィールドは、予測的最適化が有効になっているかどうかの詳細を示す Unity Catalog プロパティです。 予測的最適化が親オブジェクトから継承される場合、これはフィールド値に示されます。

次の構文を使用して、予測的最適化が有効になっているかどうかを確認します。

DESCRIBE (CATALOG | SCHEMA | TABLE) EXTENDED name

システム テーブルを使用して予測的最適化を追跡する

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

制限事項

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

予測的最適化は、リキッドクラスタリングまたは Z-Orderを使用するテーブルに対してOPTIMIZEコマンドを実行しません。

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