什麼是預測性 I/O?

預測I/O是一系列Azure Databricks優化,能加快讀取與更新資料:

  • 加速讀取可加快選擇性查詢;否則這類查詢會掃描遠多於其傳回量的資料。
  • 加速更新 減少了當更新、刪除或合併只改變檔案中少數幾列時,重寫的資料量。

預測性 I/O 專屬於 Azure Databricks 上的 Photon 引擎。 請參閱 什麼是 Photon?。

何時套用預測 I/O

Predictive I/O 會自動執行。 你不會為個別查詢開啟它。 受益:

預測性 I/O 也取代了布隆濾波器索引。 詳見 Bloom filter 索引(已棄用)。

使用預測性 I/O 加速讀取

預測性 I/O 可用來加速支援計算類型上所有作業的數據掃描和篩選效能。

重要

無伺服器和 PRO 類型的 SQL 倉儲支持預測性 I/O 讀取,以及執行 Databricks Runtime 11.3 LTS 和更新版本的 Photon 加速叢集。

Predictive I/O 透過應用深度學習技術以提升掃描效能:

  • 找出最有效率的存取模式來讀取資料,並只掃描真正需要的資料。
  • 排除不需要用來產生查詢結果的欄位和資料列的解碼。
  • 在符合數據列的選擇性查詢中,計算搜尋準則的機率。 當查詢執行時,Predictive I/O 會利用這些機率預測下一個相符資料列出現的位置,並只從雲端儲存讀取該資料。

使用預測性 I/O 加速更新

所有在這些 Photon 啟用計算類型上啟用刪除向量的資料表,都會自動使用用於更新的 Predictive I/O:

  • 無伺服器 SQL 倉儲。
  • Pro SQL 倉儲。
  • 執行 Databricks Runtime 14.0 和更新版本之叢集。

注意

Databricks Runtime 12.2 LTS 及以上版本支援用於更新的預測性 I/O,但 Databricks 建議使用 14.0 和更高版本以獲得最佳效能。

請參見 Databricks 中的刪除向量。

重要

工作區管理員設定控制刪除向量是否自動啟用,適用於新的 Delta Lake 資料表。 請參閱自動啟用刪除向量。

您可以藉由設定 Delta Lake 資料表屬性,在 Delta Lake 資料表上啟用刪除向量的支援。 你可以在建立表格時啟用刪除向量,或修改現有表格,例如:

CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);

ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);

警告

當您啟用刪除向量時,會升級資料表通訊協定版本。 升級後,不支援刪除向量的 Delta Lake 用戶端無法讀取該表格。 請參閱 Delta Lake 功能相容性和通訊協定。

有關支援刪除向量的客戶端列表,請參見 客戶端相容性。

在 Databricks Runtime 14.1 和更新版本中,您可以卸除刪除向量數據表功能,以啟用與其他 Delta 用戶端的相容性。 請參閱 刪除 Delta Lake 資料表功能和降級資料表協議。

預測 I/O 利用刪除向量,透過減少 Delta Lake 資料表在資料修改期間進行完整檔案重寫的頻率,來加速更新。 預測性 I/O 優化DELETE、MERGE和UPDATE作業。

預測性 I/O 會使用刪除向量來指出已從目標資料檔中移除記錄,而不是在更新或刪除任何記錄時重寫資料檔中的所有記錄。 補充數據檔可用來指出更新。

數據表上的後續讀取會藉由將已註明的變更套用至最新的數據表版本,來解析目前的數據表狀態。

重要

預測性 I/O 更新會與刪除向量共用所有限制。 在 Databricks Runtime 12.2 LTS 及以上版本中,以下限制適用:

  • 在啟用刪除向量的表格上不支援 OpenSharing。
  • 您無法為存在刪除向量之資料表產生指令清單檔。 執行 REORG TABLE ... APPLY (PURGE) 並確定沒有並行寫入作業正在執行,以便產生指令清單。
  • 您無法逐步生成啟用刪除向量的資料表的清單檔案。