Delta Lake の予測最適化
予測最適化により、Azure Databricks での Delta テーブルのメンテナンス操作を手動で管理する必要がなくなります。
予測最適化を有効にすると、Azure Databricks は自動的にメンテナンス操作が有益なテーブルを特定し、ユーザーの代わりに実行します。 メンテナンス操作は必要な場合にのみ実行されるため、メンテナンス操作のための不必要な実行と、パフォーマンスの追跡やトラブルシューティングに関連する負担の両方が排除されます。
予測最適化ではどのような操作を行いますか?
予測最適化は、有効な Delta テーブルに対して、次のような操作を自動的に実行します。
操作 | 説明 |
---|---|
OPTIMIZE |
有効なテーブルの増分クラスタリングをトリガーします。 「Delta テーブルに Liquid Clustering クラスタリングを使用する」を参照してください。 ファイル サイズを最適化することで、クエリのパフォーマンスを向上させます。 「データ ファイル レイアウトを最適化する」を参照してください。 |
VACUUM |
テーブルで参照されなくなったデータ ファイルを削除することで、ストレージ コストを削減します。 「VACUUM を使用して未使用のデータ ファイルを削除する」を参照してください。 |
Note
OPTIMIZE
は予測最適化を実行する際に ZORDER
を実行しません。
警告
VACUUM
コマンドの保持期間は delta.deletedFileRetentionDuration
テーブル プロパティによって決定され、既定では 7 日間です。 つまり、VACUUM
は、過去 7 日間の Delta テーブル バージョンで参照されなくなったデータ ファイルを削除します。 より長期間データを保持したい場合 (より長い期間のタイム トラベルをサポートするためなど)、次の例に示すように予測最適化を有効にする前に、このテーブル プロパティを適切に設定する必要があります。
ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');
予測最適化はどこで行われますか?
予測最適化では、OPTIMIZE
と VACUUM
の運用が有益なテーブルを特定し、ジョブ コンピューティングを使用して実行するようキューに入れます。 お客様のアカウントは、Databricks 管理サービスに固有の SKU を使用して、これらのワークロードに関連するコンピューティングに対して請求されます。 Databricks 管理サービスの価格を参照してください。 Azure Databricks は、予測最適化の運用、コスト、影響に対する可観測性用にシステム テーブルを提供します。 「予測最適化を追跡するためにシステム テーブルを使用する」を参照してください。
予測最適化の前提条件
予測最適化を有効にするには、次の要件を満たす必要があります。
Azure Databricks ワークスペースには、予測最適化をサポートするリージョンで Premium プランが必要です。 「Azure Databricks のリージョン」を参照してください。
予測最適化を有効にする場合は、SQL ウェアハウスまたは Databricks Runtime 12.2 LTS 以降を使用する必要があります。
Unity Catalog マネージド テーブルのみがサポートされています。
ストレージ アカウントにプライベート接続が必要な場合は、サーバーレス プライベート接続を構成する必要があります。 「サーバーレス コンピューティングからのプライベート接続を構成する」を参照してください。
予測最適化を有効にする
アカウント レベルで予測最適化を有効にする必要があります。
指定されたレベルで予測最適化を有効または無効にするには、次のような権限が必要です。
Unity Catalog オブジェクト | 権限 |
---|---|
取引先企業 | アカウント管理者 |
カタログCatalog | カタログ所有者 |
[スキーマ] | スキーマの所有者 |
Note
予測最適化を初めて有効にすると、Azure Databricks は自動的に Azure Databricks アカウントにサービス プリンシパルを作成します。 Azure Databricks は、このサービス プリンシパルを使用して、要求されたメンテナンス処理を実行します。 「サービス プリンシパルを管理する」を参照してください。
アカウントの予測最適化を有効にする
アカウント管理者がアカウント内のすべてのメタストアで予測最適化を有効にするには、次の手順を実行する必要があります。
- アカウント コンソールにアクセスします。
- [設定]、[機能の有効化] の順に移動します。
- [予測最適化] の横にある [有効] を選択します。
Note
予測最適化をサポートしていないリージョンのメタストアは有効になりません。
カタログまたはスキーマ向けの予測最適化を有効または無効にする
予測最適化は継承モデルを使用します。 カタログに対して有効にすると、スキーマはこのプロパティを継承します。 有効になったスキーマ内のテーブルは、予測最適化を継承します。 この継承動作を上書きするには、カタログまたはスキーマの予測最適化を明示的に無効にします。
Note
予測最適化は、アカウント レベルで有効にする前に、カタログレベルまたはスキーマ レベルで無効にすることができます。 後でアカウントで予測最適化を有効にすると、これらのオブジェクト内のテーブルに対してブロックされます。
予測最適化を有効または無効にするには、次の構文を使用します。
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
予測最適化を追跡するためにシステム テーブルを使用する
Azure Databricks は、予測最適化操作の履歴を追跡するシステム テーブルを提供します。 「予測最適化システムテーブル参照」を参照してください。
制限事項
予測最適化は、すべてのリージョンで使用できるわけではありません。 「Azure Databricks のリージョン」を参照してください。
予測最適化では、Z オーダーを使用するテーブルに対して OPTIMIZE
コマンドを実行しません。
予測最適化では、ファイル保持期間が既定の 7 日間を下回って構成されたテーブルに対する VACUUM
操作は実行されません。 「タイム トラベル クエリのデータ保持を構成する」を参照してください。
予測最適化は、次のテーブルのメンテナンス操作を実行しません。
- Delta 共有の受信者としてワークスペースに読み込まれたテーブル。
- 具体化されたビュー。 「Databricks SQL の具体化されたビューを使用する」を参照してください。
- ストリーミング テーブル。 「Databricks SQL でストリーミング テーブルを使用してデータを読み込む」を参照してください。