Delta Lakeの予測的最適化
予測的最適化により、Databricks の Delta テーブルのメンテナンス操作を手動で管理する必要がなくなります。
予測的最適化を有効にすると、Databricks はメンテナンス操作の恩恵を受けるテーブルを自動的に識別し、ユーザーのために実行します。 メンテナンス操作は必要な場合にのみ実行されるため、メンテナンス操作の不要な実行と、パフォーマンスの追跡とトラブルシューティングに関連する負担の両方を排除します。
予測的最適化はどのような操作を実行しますか?
予測的最適化では、有効な Delta テーブルに対して次の操作が自動的に実行されます。
オペレーション |
説明 |
---|---|
|
有効なテーブルの増分クラスタリングをトリガーします。 「Deltaテーブルにリキッドクラスタリングを使用する」を参照してください。 ファイルサイズを最適化することで、クエリのパフォーマンスを向上させます。 「データファイルのレイアウトを最適化する」を参照してください。 |
|
テーブルによって参照されなくなったデータ ファイルを削除することで、ストレージ コストを削減します。 「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 には、予測的最適化操作、コスト、影響に関する監視のためのシステム テーブルが用意されています。 「システム テーブルを使用した予測的最適化の追跡」を参照してください。
予測的最適化の前提条件
予測的最適化を有効にするには、次の要件を満たす必要があります。
Databricks ワークスペースは、予測的最適化をサポートするリージョンの Premium プラン以上 である必要があります。 「Databricks のクラウドとリージョン」を参照してください。
予測的最適化を有効にする場合は、SQLウェアハウスまたは Databricks Runtime 12.2 LTS 以降を使用する必要があります。
Unity Catalogマネージド テーブルのみがサポートされます。
アカウントでサーバーレスコンピュートが有効になっている必要があります。 「アカウントでのサーバレス コンピュートの有効化」を参照してください。
予測的最適化を有効にする
アカウントレベルで予測的最適化を有効にする必要があります。
指定したレベルで予測的最適化を有効または無効にするには、次の権限が必要です。
Unity Catalog オブジェクト |
権限 |
---|---|
アカウント |
アカウント管理者 |
カタログ |
カタログ所有者 |
スキーマ |
スキーマ所有者 |
注:
予測的最適化を初めて有効にすると、Databricks アカウント内にサービスプリンシパルが自動的に作成されます。 Databricks は、このサービスプリンシパルを使用して、要求されたメンテナンス操作を実行します。 「サービスプリンシパルの管理」を参照してください。
アカウントの予測的最適化を有効にする
アカウント管理者は、次の手順を実行して、アカウント内のすべてのメタストアの予測的最適化を有効にする必要があります。
アカウントコンソールにアクセスします。
[ 設定]、[ 機能の有効化] の順に移動します。
[予測的最適化] の横にある [有効] を選択します。
注:
予測的最適化をサポートしていないリージョンのメタストアは有効になっていません。
カタログまたはスキーマの予測的最適化を有効または無効にする
予測的最適化では、継承モデルを使用します。 カタログに対して有効にすると、スキーマはプロパティを継承します。 有効なスキーマ内のテーブルは、予測的最適化を継承します。 この継承動作をオーバーライドするには、カタログまたはスキーマの予測的最適化を明示的に無効にします。
注:
予測的最適化をアカウント レベルで有効にする前に、カタログ レベルまたはスキーマ レベルで無効にすることができます。 後でアカウントで予測的最適化が有効になった場合、これらのオブジェクトのテーブルに対してブロックされます。
次の構文を使用して、予測的最適化を有効または無効にします。
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
コマンドを実行しません。
予測的最適化では、ファイル保持期間が 7 日未満に設定されているテーブルに対しては操作を実行しませVACUUM
。 「タイムトラベルクエリのデータ保持を構成する」を参照してください。
予測的最適化では、次のテーブルに対してメンテナンス操作は実行されません。
Delta Sharing受信者としてワークスペースに読み込まれたテーブル。
マテリアライズドビュー。 「Databricks SQL でマテリアライズド ビューを使用する」を参照してください。
ストリーミング テーブル。 「Databricks SQL でストリーミング テーブルを使用してデータを読み込む」を参照してください。