什麼是預測性 I/O?
預測性 I/O 是 Azure Databricks 優化集合,可改善數據互動的效能。 預測性 I/O 功能分成下列類別:
- 加速讀取可減少掃描和讀取資料所需的時間。
- 加速更新可減少在更新、刪除和合併期間需要重寫的數據量。
預測性 I/O 專屬於 Azure Databricks 上的 Photon 引擎。
使用預測性 I/O 加速讀取
預測性 I/O 可用來加速支援計算類型上所有作業的數據掃描和篩選效能。
重要
無伺服器和 PRO 類型的 SQL 倉儲支持預測性 I/O 讀取,以及執行 Databricks Runtime 11.3 LTS 和更新版本的 Photon 加速叢集。
預測性 I/O 藉由套用深度學習技術來執行下列動作,以改善掃描效能:
- 判斷最有效率的存取模式來讀取數據,並只掃描實際需要的數據。
- 排除不需要用來產生查詢結果的欄位和資料列的解碼。
- 在符合數據列的選擇性查詢中,計算搜尋準則的機率。 當查詢執行時,我們會使用這些機率來預測下一個相符數據列的發生位置,並且只會從雲端記憶體讀取該數據。
使用預測性 I/O 加速更新
啟用了刪除向量的所有資料表將自動使用以下啟用了 Photon 的計算類型進行預測性 I/O 更新:
- 無伺服器 SQL 倉儲。
- Pro SQL 倉儲。
- 執行 Databricks Runtime 14.0 和更新版本之叢集。
注意
Databricks Runtime 12.2 LTS 和更新版本支持預測性 I/O,但 Databricks 建議使用 14.0 和更新版本以獲得最佳效能。
請參閱什麼是刪除向量?。
重要
管理員在工作區的設定可控制是否自動為新的 Delta 資料表啟用刪除向量功能。 請參閱自動啟用刪除向量。
您可以藉由設定 Delta Lake 資料表屬性,在 Delta Lake 資料表上啟用刪除向量的支援。 您可以在資料表建立或改變現有資料表期間啟用刪除向量,如下列範例所示:
CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);
警告
當您啟用刪除向量時,會升級資料表通訊協定版本。 升級之後,Delta Lake 用戶端將無法讀取不支援刪除向量的數據表。 請參閱 Azure Databricks 如何管理 Delta Lake 功能相容性?。
如需支援刪除向量的用戶端清單,請參閱 與 Delta 用戶端的相容性。
在 Databricks Runtime 14.1 和更新版本中,您可以卸除刪除向量數據表功能,以啟用與其他 Delta 用戶端的相容性。 請參閱 Drop Delta資料表功能。
預測性 I/O 利用刪除向量來加速更新,通過降低在 Delta 表上數據修改期間所需的完整檔案重寫頻率來實現。 預測性 I/O 會 DELETE
優化、 MERGE
和 UPDATE
作業。
預測性 I/O 會使用刪除向量來指出已從目標資料檔中移除記錄,而不是在更新或刪除任何記錄時重寫資料檔中的所有記錄。 補充數據檔可用來指出更新。
數據表上的後續讀取會藉由將已註明的變更套用至最新的數據表版本,來解析目前的數據表狀態。
重要
預測性 I/O 更新會與刪除向量共用所有限制。 在 Databricks Runtime 12.2 LTS 和更新中,存在下列限制:
- 已啟用刪除向量的數據表不支援 Delta 分享。
- 您無法為存在刪除向量之資料表產生指令清單檔。 執行
REORG TABLE ... APPLY (PURGE)
並確定沒有並行寫入作業正在執行,以便產生指令清單。 - 您無法逐步生成啟用刪除向量的資料表的清單檔案。