予測的最適化 システムテーブル Reference
プレビュー
このシステムテーブルは パブリック プレビュー段階です。
このテーブルにアクセスするには、地域が予測的最適化をサポートしている必要があります。 Databricks のクラウドとリージョンを参照してください。
この記事では、予測的最適化操作履歴テーブル スキーマの概要を説明し、サンプル クエリを提供します。 予測的最適化 データレイアウトを最適化し、ピークパフォーマンスとコスト効率を実現します。 システムテーブルは、この機能の操作履歴を追跡します。 予測的最適化に関する情報については、Unity Catalog マネージドテーブルに対する予測的最適化を参照してください。
テーブルパス :このシステムテーブルは system.storage.predictive_optimization_operations_historyにあります。
配信に関する考慮事項
- 予測的最適化システム テーブルは 2 時間以内に更新されます。 ただし、請求情報のデータが入力されるまでに最大 24 時間かかる場合があります。
- 予測的最適化では、同じクラスターで複数の操作が実行される場合があります。 その場合、複数の操作のそれぞれに起因する DBU のシェアは概算されます。 これが、
usage_unitがに設定されている理由ですESTIMATED_DBU。 それでも、クラスターに費やされた DBU の合計数は正確です。
予測的最適化 Table Schema
予測的最適化操作履歴システムテーブルでは、次のスキーマが使用されます。
列名 | データ型 | 説明 | 例 |
|---|---|---|---|
| string | アカウントの ID。 |
|
| string | 予測的最適化が操作を実行したワークスペースの ID。 |
|
| タイムスタンプ | 操作が開始された時刻。 タイムゾーン情報は、 |
|
| タイムスタンプ | 操作が終了した時刻。 タイムゾーン情報は、 |
|
| string | 最適化されたテーブルが属するメタストアの名前。 |
|
| string | 最適化されたテーブルが属するメタストアの ID。 |
|
| string | 最適化されたテーブルが属するカタログの名前。 |
|
| string | 最適化されたテーブルが属するスキーマの名前。 |
|
| string | 最適化されたテーブルの ID。 |
|
| string | 最適化されたテーブルの名前。 |
|
| string | 実行された最適化操作。次のいずれかの値である必要があります: |
|
| string | 最適化操作の ID。 |
|
| string | 最適化操作のステータス。次のいずれかの値である必要があります: |
|
| map[文字列, 文字列] | 実行された特定の最適化に関する追加の詳細。 Operation メトリクスを参照してください。 |
|
| string | この操作で発生した使用量の単位。次の値である必要があります: |
|
| DECIMALタイプ | この操作で使用された使用量の単位の量。 |
|
Operation メトリクス
operation_metrics列に記録されるメトリクスは、操作のタイプによって異なります。
操作名 | 操作の説明 | operationMetrics | 説明 |
|---|---|---|---|
| ファイルサイズを最適化することで、クエリのパフォーマンスを向上させます。 データファイルレイアウトの最適化を参照してください。 |
| この操作によって削除されたファイルの数。 |
| この操作によって削除されたバイト数。 | ||
| この操作によって追加された新しいファイルの数。 | ||
| この操作によって追加されたバイト数。 | ||
| テーブルによって参照されなくなったデータ ファイルを削除することで、ストレージ コストを削減します。「vacuum を使用して未使用のデータ ファイルを削除する」を参照してください。 |
| この操作によってガベージ コレクションされたファイルの数。 |
| この操作によってガベージ コレクションされたバイト数。 | ||
| クエリのパフォーマンスを向上させるために統計の増分更新をトリガーします。「ANALYZE TABLE」を参照してください。 |
| この操作によってスキャンされたバイト数。 |
| この操作によってスキャンされたファイルの数。 | ||
| この操作後の古さの割合が減少します。この統計は、 | ||
| 有効なテーブルのインクリメンタル・クラスタリングをトリガーします。 テーブルにリキッドクラスタリングを使用するを参照してください。 |
| この操作によって削除されたファイルの数。 |
| この操作によって追加された新しいファイルの数。 | ||
| この操作によって削除されたバイト数。 | ||
| この操作によって追加されたバイト数。 | ||
| クラスタリング列を展開するかどうかを評価します。「自動リキッドクラスタリング」を参照してください。 |
| 以前のデータ レイアウト。古いクラスタリング キー、またはパーティション化されていない場合は「なし」になります。 |
| この操作によって適用される新しいクラスタリング列。 | ||
| この操作によってクラスタリング列が進化したかどうか。 | ||
| クラスタリング列が変更される、または変更されない理由。 | ||
| ワークロードから統計をスキップしてデータが欠落している列を検出し、それをバックフィルします。「データのスキップ」を参照してください。 |
| この操作によってスキャンされたバイト数。 |
| この操作によってスキャンされたファイルの数。 | ||
| この操作によって適用された新しく追加されたデータ スキップ列。 | ||
| この操作によってデータ スキップ列が削除されました。 | ||
| データスキップ列の以前の完全なリスト。 | ||
| データスキップ列の現在の完全なリスト。 | ||
| 互換Mode古くなっているかどうかを検出し、テーブルを更新します。 互換Modeを参照してください。 | N/A | 互換Mode更新操作。 |
クエリの例
次のセクションでは、予測的最適化 システムテーブルに知見を得るために使用できるサンプル クエリを示します。 これらのクエリを機能させるには、パラメーター値を独自の値に置き換える必要があります。
この記事には、次のクエリの例が含まれています。
- 過去 30 日間に予測的最適化が使用された推定 DBU はいくつありますか?
- 過去 30 日間に予測的最適化が最も多く費やしたテーブル (推定コスト) はどれか?
- 予測的最適化が最も多くの操作を実行しているのはどのテーブルですか?
- 特定のカタログについて、圧縮された合計バイト数はいくつですか?
- 最も多くのバイト vacuumがあったテーブルはどれですか?
- 予測的最適化による実行操作の成功率はどれくらいですか?
過去 30 日間に予測的最適化が使用された推定 DBU はいくつありますか?
SELECT SUM(usage_quantity)
FROM system.storage.predictive_optimization_operations_history
WHERE
usage_unit = "ESTIMATED_DBU"
AND timestampdiff(day, start_time, Now()) < 30;
特定の ETL パイプラインで同じ値を見つけるには、まずそのパイプライン内のテーブルを見つけてから、DBU を検索します。
-- Find all full table names for the pipeline:
WITH pipeline_mapping AS (
SELECT DISTINCT target_table_full_name AS target_table_name
FROM system.access.table_lineage
WHERE entity_type = 'PIPELINE' AND entity_id = :pipeline_id
)
-- Select all operations for any table in that pipeline:
SELECT SUM(usage_quantity)
FROM system.storage.predictive_optimization_operations_history
WHERE
CONCAT_WS('.', catalog_name, schema_name, table_name)
IN ( SELECT target_table_name FROM pipeline_mapping)
AND usage_unit = "ESTIMATED_DBU"
AND timestampdiff(day, start_time, Now()) < 30;
過去 30 日間に予測的最適化が最も多く費やしたテーブル (推定コスト) はどれか?
SELECT
metastore_name,
catalog_name,
schema_name,
table_name,
SUM(usage_quantity) as totalDbus
FROM system.storage.predictive_optimization_operations_history
WHERE
usage_unit = "ESTIMATED_DBU"
AND timestampdiff(day, start_time, Now()) < 30
GROUP BY ALL
ORDER BY totalDbus DESC;
予測的最適化が最も多くの操作を実行しているのはどのテーブルですか?
SELECT
metastore_name,
catalog_name,
schema_name,
table_name,
operation_type,
COUNT(DISTINCT operation_id) as operations
FROM system.storage.predictive_optimization_operations_history
GROUP BY ALL
ORDER BY operations DESC;
特定のカタログについて、圧縮された合計バイト数はいくつですか?
SELECT
schema_name,
table_name,
SUM(operation_metrics["amount_of_data_compacted_bytes"]) as bytesCompacted
FROM system.storage.predictive_optimization_operations_history
WHERE
metastore_name = :metastore_name
AND catalog_name = :catalog_name
AND operation_type = "COMPACTION"
GROUP BY ALL
ORDER BY bytesCompacted DESC;
最も多くのバイト vacuumがあったテーブルはどれですか?
SELECT
metastore_name,
catalog_name,
schema_name,
table_name,
SUM(operation_metrics["amount_of_data_deleted_bytes"]) as bytesVacuumed
FROM system.storage.predictive_optimization_operations_history
WHERE operation_type = "VACUUM"
GROUP BY ALL
ORDER BY bytesVacuumed DESC;
予測的最適化による実行操作の成功率はどれくらいですか?
WITH operation_counts AS (
SELECT
COUNT(DISTINCT (CASE WHEN operation_status = "SUCCESSFUL" THEN operation_id END)) as successes,
COUNT(DISTINCT operation_id) as total_operations
FROM system.storage.predictive_optimization_operations_history
)
SELECT successes / total_operations as success_rate
FROM operation_counts;