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