Unity 目錄受控數據表的預測優化
注意
針對在 2024 年 11 月 11 日之後建立的所有帳戶,Databricks 預設會啟用預測優化。
使用預測優化技術可以免除在 Azure Databricks 上手動管理 Unity Catalog 所受控資料表的維護作業。
啟用預測優化后,Azure Databricks 會自動執行下列動作:
- 識別可受益於維護作業的數據表,並將這些作業排入佇列以執行。
- 將數據寫入 Managed 資料表時收集統計數據。
維護作業會根據需要進行,消除不必要的維護作業執行以及與效能追蹤和疑難排解相關的負擔。
重要
預測性優化只會在 Unity 目錄受控數據表上執行。
預測優化不會在 Databricks SQL 或使用 Delta Live Tables 管線建立的串流數據表或具體化檢視上執行。
預測優化會執行哪些作業?
預測優化會自動針對已啟用的數據表執行下列作業:
作業 | 描述 |
---|---|
OPTIMIZE
(1) |
觸發已啟用資料表的增量分群處理。 請參閱 在 Delta 資料表中使用液體聚類。 藉由優化檔案大小來改善查詢效能。 請參閱 優化資料檔設定。 |
VACUUM |
藉由刪除數據表不再參考的數據檔來降低記憶體成本。 請參閱 使用真空移除未使用的數據檔。 |
ANALYZE |
觸發統計數據的累加式更新,以改善查詢效能。 請參閱 ANALYZE TABLE。 |
(1)OPTIMIZE
在預測性優化執行時不會執行 ZORDER
。
警告
VACUUM
命令的保留時間範圍是由預設為 7 天的 delta.deletedFileRetentionDuration
資料表屬性所決定。 這表示 VACUUM
會移除過去 7 天內 Delta 數據表版本不再參考的數據檔。 如果您想要將數據保留更長的時間(例如支援持續時間較長的時間移動),您必須先適當地設定此資料表屬性,才能啟用預測優化,如下列範例所示:
ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');
預測優化在何處執行?
預測性優化可識別受惠於 ANALYZE
、OPTIMIZE
,以及 VACUUM
作業的數據表,並將數據表排入佇列,以使用無伺服器計算來執行作業。 您的帳戶會使用 Databricks 受控服務專屬的 SKU 來支付與這些工作負載相關聯的計算費用。 請參閱 Databricks 受控服務的定價。 Azure Databricks 提供系統數據表,以觀察預測優化作業、成本和影響。 請參閱 使用系統資料表來追蹤預測優化。
預測優化的必要條件
您必須滿足下列需求,才能啟用預測優化:
您的 Azure Databricks 工作區必須位於 支援預測優化區域的進階方案 上。 請參閱 Azure Databricks 區域。
當您啟用預測優化時,必須使用 SQL 倉儲或 Databricks Runtime 12.2 LTS 或更新版本。
僅支援 Unity Catalog 管理的資料表。
如果您需要記憶體帳戶的私人連線,則必須設定無伺服器私人連線能力。 請參閱從無伺服器計算設定私人連線能力。
啟用預測性優化
您可以啟用帳戶、目錄或架構的預測優化。 所有 Unity 目錄受控數據表預設都會繼承帳戶值。 您可以覆寫目錄或架構的預設帳戶設置,從而在該層級啟用或停用預測優化。
注意
如果您的帳戶是在 2024 年 11 月 11 日之後建立的,則預設會針對您的帳戶啟用預測優化。
您必須具備下列許可權,才能在指定的層級啟用或停用預測優化:
Unity Catalog 物件 | 權限 |
---|---|
客戶 | 帳戶管理員 |
目錄 | 目錄擁有者 |
圖式 | 架構擁有者 |
注意
當您第一次啟用預測優化時,Azure Databricks 會自動在 Azure Databricks 帳戶中建立服務主體。 Azure Databricks 會使用此服務主體來執行要求的維護作業。 請參閱管理服務主體。
啟用或停用帳戶的預測優化
帳戶管理員可以完成下列步驟,為帳戶中的所有中繼存放區啟用預測優化。 帳戶中的物件預設會繼承此設定(但可以在目錄或架構層級覆寫設定):
- 存取帳戶主控台。
- 流覽至 [設定],然後流覽至 [功能啟用]。
- 在[預測性優化]旁邊選擇[已啟用]選項。
注意
- 不支援預測優化的區域中的中繼存放區未被啟用。
- 停用帳戶層級的預測優化不會影響已特別啟用的目錄或資料結構。
啟用或停用目錄或架構的預測優化
預測優化會使用繼承模型。 為目錄啟用時,架構會繼承 屬性。 已啟用架構內的數據表會繼承預測優化。 若要覆寫此繼承行為,您可以明確地針對目錄或架構啟用或停用預測優化。
注意
您可以在帳戶層級啟用預測優化之前,先停用類別目錄或架構層級的預測優化。 如果稍後在帳戶上啟用預測優化,則會封鎖這些對象中的數據表。
使用下列語法來啟用或停用預測優化,或傳回繼承自父對象的預設值:
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 提供系統數據表來追蹤預測優化作業的歷程記錄。 請參閱 預測優化系統資料表參考。
私人連結錯誤訊息
如果系統資料表將操作標示為失敗,出現 FAILED: PRIVATE_LINK_SETUP_ERROR
,可能是因為您尚未正確設定無伺服器運算的私人連線。 請參閱從無伺服器計算設定私人連線能力。
限制
預測性優化在所有區域中都無法使用。 請參閱 Azure Databricks 區域。
預測性優化不會在使用 Z 順序的數據表上執行 OPTIMIZE
命令。
預測性優化不會在數據表上執行 VACUUM
作業,其檔案保留時間範圍設定在預設值 7 天以下。 請參閱設定時間移動查詢的資料保留。
預測性優化不會對下表執行維護作業:
- 載入至工作區做為 Delta Sharing 收件者的數據表。
- 外部資料表。
- 具體化檢視。 請參閱 在 Databricks SQL中使用具化視圖。
- 串流數據表。 請參閱 在 Databricks SQL中使用串流數據表載入數據。