Unity Catalog マネージドテーブルの予測的最適化
注:
2024年11月11日以降に作成されたすべてのアカウントについて、 Databricks はデフォルトによる予測的最適化を有効にします。
予測的最適化により、DatabricksのUnity Catalog マネージドテーブルのメンテナンスオペレーションを手動で管理する必要がなくなります。
予測的最適化を有効にすると、 Databricks は自動的に次の処理を行います。
メンテナンス操作の恩恵を受けるテーブルを特定し、これらの操作を実行するキューに入れます。
データがマネージドテーブルに書き込まれるときに統計を収集します。
メンテナンス操作は必要に応じて実行されるため、メンテナンス操作の不要な実行と、パフォーマンスの追跡とトラブルシューティングに関連する負担の両方を排除します。
重要
予測的最適化はUnity Catalog マネージドテーブルに対してのみ実行されます。
予測的最適化は、 Databricks SQL または Delta Live Tables パイプラインを使用して作成されたストリーミングテーブルまたはマテリアライズドビューでは実行されません。
予測的最適化は、すべての地域で利用できるわけではありません。 「AI と機械学習機能の可用性」を参照してください。
予測的最適化はどのような操作を実行しますか?
予測的最適化が有効なテーブルに対して、次のオペレーションを自動的に実行します。
オペレーション |
説明 |
---|---|
|
有効なテーブルの増分クラスタリングをトリガーします。 Deltaテーブルにリキッドクラスタリングを使用するを参照してください。 ファイルサイズを最適化することで、クエリのパフォーマンスを向上させます。 データファイルのレイアウトを最適化するを参照してください。 |
|
テーブルによって参照されなくなったデータ ファイルを削除することで、ストレージ コストを削減します。 vacuumで未使用のデータファイルを削除するを参照してください。 |
|
統計の増分更新をトリガーして、クエリの性能を向上させます。 ANALYZE TABLEを参照してください。 |
(1) OPTIMIZE
予測的最適化で実行した場合、 ZORDER
は実行されません。
警告
VACUUM
コマンドの保持期間は、delta.deletedFileRetentionDuration
table プロパティ (既定値は 7 日間) によって決まります。つまり VACUUM
過去 7 日間に Delta テーブル バージョンによって参照されなくなったデータ ファイルが削除されます。 データをより長く保持する場合 (タイムトラベルを長期間サポートする場合など)、次の例のように、予測的最適化を有効にする前に、このテーブル プロパティを適切に設定する必要があります。
ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');
予測的最適化はどこで実行されますか?
予測的最適化は、 ANALYZE
、 OPTIMIZE
、および VACUUM
操作からメリットが得られるテーブルを特定し、サーバレス コンピュート for ジョブを使用して実行するようにキューに入れます。 お客様のアカウントは、マネージド サービスに固有の SKU を使用して、これらのワークロードに関連付けられているコンピュートに対して Databricks請求されます。 Databricks マネージドサービスの価格を参照してください。Databricks は、予測的最適化の操作、コスト、および影響に対する可観測性のためのシステムテーブルを提供します。 システムテーブルを使用して予測的最適化を追跡するを参照してください。
予測的最適化の前提条件
予測的最適化を有効にするには、次の要件を満たす必要があります。
Databricksワークスペースは、予測的最適化をサポートするリージョンの Premium プランにある必要があります。「Databricks のクラウドとリージョン」を参照してください。
予測的最適化を有効にする場合は、SQLウェアハウスまたは Databricks Runtime 12.2 LTS 以降を使用する必要があります。
Unity Catalogマネージド テーブルのみがサポートされます。
予測的最適化を有効にする
アカウント、カタログ、またはスキーマの予測的最適化を有効にできます。 すべての Unity Catalog マネージドテーブルは、デフォルトによってアカウント値を継承します。 カタログまたはスキーマのアカウント デフォルトをオーバーライドして、そのレベルで予測的最適化を有効または無効にすることができます。
注:
2024年11月11日以降に作成されたアカウントの場合、デフォルトによってアカウントに対して予測的最適化が有効になります。
指定したレベルで予測的最適化を有効または無効にするには、次の権限が必要です。
Unity Catalog オブジェクト |
権限 |
---|---|
アカウント |
アカウント管理者 |
カタログ |
カタログ所有者 |
スキーマ |
スキーマ所有者 |
注:
予測的最適化を初めて有効にすると、Databricks アカウント内にサービスプリンシパルが自動的に作成されます。 Databricks は、このサービスプリンシパルを使用して、要求されたメンテナンス操作を実行します。 サービスプリンシパルの管理を参照してください。
Enable or disable predictistic optimization for your アカウント
アカウント管理者は、次の手順を実行して、アカウント内のすべてのメタストアに対して予測的最適化を有効にできます。 アカウント内のオブジェクトは、デフォルトでこの設定を継承します (ただし、この設定はカタログ レベルまたはスキーマ レベルで上書きできます)。
アカウントコンソールにアクセスします。
[ 設定]、[ 機能の有効化] の順に移動します。
「予測的最適化」の横にある使用するオプション (「有効」など) を選択します。
注:
予測的最適化をサポートしていないリージョンのメタストアは有効になっていません。
アカウントレベルで予測的最適化を無効にしても、特に有効にしたカタログまたはスキーマでは無効になりません。
カタログまたはスキーマの予測的最適化を有効または無効にする
予測的最適化は、継承モデルを使用します。 カタログに対して有効にすると、スキーマはプロパティを継承します。 有効なスキーマ内のテーブルは、予測的最適化を継承します。 この継承動作をオーバーライドするには、カタログまたはスキーマの予測的最適化を明示的に有効または無効にします。
注:
予測的最適化をアカウント レベルで有効にする前に、カタログ レベルまたはスキーマ レベルで無効にすることができます。 後でアカウントで予測的最適化が有効になった場合、これらのオブジェクトのテーブルに対してブロックされます。
次の構文を使用して、予測的最適化を有効または無効にするか、親オブジェクトからの継承のデフォルトに戻ります。
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
。 タイムトラベルクエリのデータ保持を構成するを参照してください。
予測的最適化では、次のテーブルに対してメンテナンス操作は実行されません。
Delta Sharing受信者としてワークスペースに読み込まれたテーブル。
外部テーブル。
マテリアライズドビュー。 Databricks SQL でマテリアライズド ビューを使用するを参照してください。
ストリーミング テーブル。 Databricks SQL でストリーミング テーブルを使用してデータを読み込むを参照してください。