こちらの機能の存在を知っていましたが、きちんとマニュアル読んでいませんでした。
予測的最適化(Predictive Optimization)により、Unity Catalog マネージドテーブルのメンテナンスオペレーションを手動で管理する必要がなくなります。
OPTIMIZE
、VACUUM
、ANALYZE
オペレーションのメリットがあるテーブルを特定し、自動でオペレーションを特定する機能です。
注意点として、自動でオペレーションが実行するので課金(DBU: Databricks Units)が発生します。当然、これらは監視すべき事項となります。その助けとなるのが予測的最適化システムテーブルとなります。クエリのサンプルがあるので、実行してみます。
過去30日間に予測的最適化によって使用された推定DBU
推定DBUとなっているのは、こちらに記載があるように、複数オペレーションの比率が概算であることによります。消費DBU自体は正確なものとなります。
SELECT SUM(usage_quantity)
FROM system.storage.predictive_optimization_operations_history
WHERE
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
テーブルごと、オペレーションごとの回数が表示されます。
予測的最適化オペレーションの成功率
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 round(successes / total_operations * 100, 1) || "%" as success_rate
FROM operation_counts
ダッシュボードの作成
これらのデータをまとめることで、予測的最適化オペレーションの概要を把握することができます。
ご活用ください