共用方式為


Unity Catalog 管理資料表的預測優化

注意

如果您的帳戶是在 2024 年 11 月 11 日或之後建立的,則預設會啟用預測最佳化。 Databricks 從 2025 年 5 月 7 日開始啟用現有帳戶。 這項啟用正在逐步推出,預計將於 2026 年 2 月完成。 如果您不確定您的帳戶是否已啟用,請參閱 檢查是否已啟用預測最佳化

使用預測優化技術可以免除在 Azure Databricks 上手動管理 Unity Catalog 所受控資料表的維護作業。

啟用預測優化后,Azure Databricks 會自動執行下列動作:

  • 識別可受益於維護作業的數據表,並將這些作業排入佇列以執行。
  • 將數據寫入 Managed 資料表時收集統計數據。

維護作業會根據需要進行,消除不必要的維護作業執行以及與效能追蹤和疑難排解相關的負擔。

Databricks 建議針對所有 Unity 目錄受控數據表使用預測優化。 例如,自動液體叢集會根據您的數據使用模式,對數據配置進行智慧型優化。 請參閱 針對數據表使用液體叢集

重要

預測性優化只會在 Unity 目錄受控數據表上執行。

預測性優化在所有區域中都無法使用。 請參閱具有有限區域可用性的功能

預測優化會執行哪些作業?

預測優化會自動針對已啟用的數據表執行下列作業:

作業 描述
OPTIMIZE (1) 觸發已啟用資料表的增量分群處理。 請參閱 針對數據表使用液體叢集
藉由優化檔案大小來改善查詢效能。 請參閱 優化資料檔設定
VACUUM 藉由刪除數據表不再參考的數據檔來降低記憶體成本。 請參閱 使用真空移除未使用的數據檔。
ANALYZE 觸發統計數據的累加式更新,以改善查詢效能。 請參閱 ANALYZE TABLE

(1)OPTIMIZE 在預測性優化執行時不會執行 ZORDER 。 在使用 Z 順序的數據表上,預測性優化將會忽略 Z 排序的檔案。

如果已啟用自動液體群集,預測性優化可能會在叢集數據之前選取新的叢集索引鍵。 請參閱 自動液體群集

警告

VACUUM 命令的保留時間範圍是由預設為 7 天的 delta.deletedFileRetentionDuration 資料表屬性所決定。 這表示 VACUUM 會移除過去 7 天內 Delta 數據表版本不再參考的數據檔。 如果您想要將數據保留更長的時間(例如支援持續時間較長的時間移動),您必須先適當地設定此資料表屬性,才能啟用預測優化,如下列範例所示:

ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');

如果您將 delta.deletedFileRetentionDuration 設定為低於預設的 7 天,則預測性優化會以保留期間為 7 天執行 VACUUM

預測優化在何處執行?

預測性優化可識別受惠於 ANALYZEOPTIMIZE,以及 VACUUM 作業的數據表,並將數據表排入佇列,以使用無伺服器計算來執行作業。 您的帳戶會針對使用無伺服器作業 SKU 與這些工作負載相關聯的計算計費。

請參閱 Databricks 受控服務的定價。 請參閱 使用系統資料表來追蹤預測優化

預測優化的必要條件

您必須滿足下列需求,才能啟用預測優化:

啟用預測性優化

您可以啟用帳戶、目錄或架構的預測優化。 所有 Unity 目錄受控數據表預設都會繼承帳戶值。 您可以針對目錄或架構覆寫帳戶預設,以在該層級啟用或停用預測優化。

注意

如果您的帳戶是在 2024 年 11 月 11 日或之後建立的,則預設會啟用預測最佳化。 Databricks 從 2025 年 5 月 7 日開始啟用現有帳戶。 這項啟用正在逐步推出,預計將於 2026 年 2 月完成。

您必須具備下列許可權,才能在指定的層級啟用或停用預測優化:

Unity Catalog 物件 權限
帳戶 帳戶管理員
目錄 目錄擁有者
圖式 架構所有者

啟用或停用帳戶的預測優化

帳戶管理員可以完成下列步驟,為帳戶中的所有中繼存放區啟用預測優化。 帳戶中的物件預設會繼承此設定(但可以在目錄或架構層級覆寫設定):

  1. 存取帳戶主控台。
  2. 導航至設定,然後導航至功能啟用
  3. 在 [預測性優化] 旁邊選擇要使用的選項(例如,已啟用)。

注意

  • 不具有預測優化支援的區域,其中繼存放區未被啟用。
  • 停用帳戶層級的預測優化不會影響已特別啟用的目錄或資料結構。

啟用或停用目錄或架構的預測優化

預測優化會使用繼承模型。 啟用目錄後,架構會繼承該屬性。 已啟用架構內的數據表會繼承預測優化。 若要覆寫此繼承行為,您可以針對目錄或架構明確啟用或停用預測性優化。

注意

您可以在帳戶層級啟用預測優化之前,先停用類別目錄或架構層級的預測優化。 如果稍後在帳戶上啟用預測優化,則會封鎖這些對象中的數據表。

使用下列語法來啟用或停用預測優化,或傳回繼承自父對象的預設值:

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

使用系統數據表來追蹤預測性優化

Azure Databricks 提供系統數據表 system.storage.predictive_optimization_operations_history,以觀察預測優化作業、成本和影響。 請參閱 預測優化系統資料表參考

如果系統資料表將操作標示為失敗,出現 FAILED: PRIVATE_LINK_SETUP_ERROR,可能是因為您尚未正確設定無伺服器運算的私人連線。 請參閱 設定 Azure 資源的私人連線

限制

預測性優化在所有區域中都無法使用。 請參閱具有有限區域可用性的功能

針對在預設值 7 天以下設定已刪除檔案保留期間 (delta.deletedFileRetentionDuration) 的資料表,預測性優化會以 VACUUM 保留期間為 7 天執行。 請參閱設定時光旅行查詢中的資料保留政策

預測性優化不會對下表執行維護作業:

  • 將數據表載入至工作區以作為 Delta Sharing 的接收端。
  • 外部資料表。