予測的最適化 for Unity Catalog マネージドテーブル
Databricks は、2024年11月11日以降に作成されたすべてのアカウントに対して、デフォルトによる予測的最適化を有効にします。
予測的最適化により、Unity Catalog マネージドテーブルのメンテナンス操作を手動で管理する必要がなくなります。Databricks
予測的最適化を有効にすると、 Databricks は自動的に次の処理を行います。
- メンテナンス操作の恩恵を受けるテーブルを特定し、これらの操作を実行するキューに入れます。
- データがマネージドテーブルに書き込まれるときに統計を収集します。
メンテナンス操作は必要に応じて実行されるため、メンテナンス操作の不要な実行と、パフォーマンスの追跡とトラブルシューティングに関連する負担の両方を排除します。
Databricks は、すべてのマネージドテーブルに対して自動リキッドクラスタリングと予測的最適化 Unity Catalog を使用することをお勧めします。 これらの機能により、データ使用パターンに基づいてデータレイアウトをインテリジェントに最適化できます。 「Deltaテーブルにリキッドクラスタリングを使用する」を参照してください。
予測的最適化 Only Rund on Unity Catalog マネージドテーブル.
Databricks SQL または DLT パイプラインを使用して作成されたストリーミングテーブルまたはマテリアライズドビューでは、予測的最適化は実行されません。
予測的最適化 はどのような操作を実行しますか?
予測的最適化 有効なテーブルに対して、次の操作を自動的に実行します。
オペレーション | 説明 |
---|---|
| 有効なテーブルのインクリメンタル・クラスタリングをトリガーします。 「Deltaテーブルにリキッドクラスタリングを使用する」を参照してください。 ファイルサイズを最適化することで、クエリのパフォーマンスを向上させます。 「データファイルレイアウトの最適化」を参照してください。 |
| テーブルで参照されなくなったデータファイルを削除することにより、ストレージコストを削減します。 「 vacuumを使用した未使用のデータファイルの削除」を参照してください。 |
| 統計の増分更新をトリガーして、クエリの性能を向上させます。 ANALYZE TABLEを参照してください。 |
(1) OPTIMIZE
予測的最適化で実行した場合、 ZORDER
は実行されません。 Z-Orderを使用するテーブルでは、予測的最適化はZ-orderedファイルを無視します。
自動リキッドクラスタリングが有効になっている場合、予測的最適化では、データのクラスタリングの前に新しいクラスタリングキーが選択されることがあります。 「Deltaテーブルにリキッドクラスタリングを使用する」を参照してください。
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ワークスペースは、予測的最適化をサポートするリージョンの Premium プラン以上である必要があります。「地域限定での提供が可能な機能」を参照してください。
- 予測的最適化を有効にする場合は、SQLウェアハウスまたは Databricks Runtime 12.2 LTS 以降を使用する必要があります。
- マネージドテーブル Unity Catalog のみがサポートされています。
Enable 予測的最適化
アカウント、カタログ、またはスキーマの予測的最適化を有効にできます。 すべての Unity Catalog マネージドテーブルは、デフォルトによってアカウント値を継承します。 カタログまたはスキーマのアカウント デフォルトをオーバーライドして、そのレベルで予測的最適化を有効または無効にすることができます。
2024年11月11日以降に作成されたアカウントの場合、デフォルトによってアカウントに対して予測的最適化が有効になります。
指定したレベルで予測的最適化を有効または無効にするには、次の権限が必要です。
Unity Catalog オブジェクト | 権限 |
---|---|
アカウント | アカウント管理者 |
CATALOG | カタログ所有者 |
SCHEMA | スキーマの所有者 |
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 は、予測的最適化操作、コスト、および影響に対する可観測性のためのシステムテーブル system.storage.predictive_optimization_operations_history
を提供します。 予測的最適化 システムテーブル リファレンスを参照してください。
制限
予測的最適化は、すべての地域で利用できるわけではありません。 「地域限定での提供が可能な機能」を参照してください。
削除されたファイルの保持期間 (delta.deletedFileRetentionDuration
) がデフォルトの 7 日未満に設定されたテーブルの場合、予測的最適化 実行 VACUUM
保持期間が 7 日間に指定されています。 タイムトラベル クエリのデータ保持の構成を参照してください。
予測的最適化では、次のテーブルに対してメンテナンス操作は実行されません。
- Delta Sharing の受信者としてワークスペースに読み込まれたテーブル。
- 外部テーブル。
- 具体化されたビュー。 「Databricks SQL で具体化されたビューを使用する」を参照してください。
- ストリーミング テーブル。 「Databricks SQL のストリーミング テーブルを使用してデータを読み込む」を参照してください。