分享方式:


真空

適用於: 檢查標示為是 Databricks SQL 檢查標示為是 Databricks Runtime

從資料表目錄移除未使用的檔案。

注意

此命令的運作方式會因您使用的是 Delta 或 Apache Spark 資料表而有所不同。

清理 Delta 資料表

以遞歸方式清理與 Delta 數據表相關聯的目錄。 如需完整詳細數據和限制,請參閱 使用真空移除未使用的數據檔。

VACUUM 從數據表目錄中移除不是由 Delta 管理的所有檔案,以及不再處於數據表事務歷史記錄最新狀態且早於保留閾值的數據檔。 VACUUM 會略過以底線 (_) 開頭的所有目錄,其中包含 _delta_log。 在以底線開頭的數據行上分割數據表,是此規則的例外狀況; VACUUM 會掃描目標 Delta 資料表中包含的所有有效分割區。 差異數據表數據檔會根據在邏輯上從 Delta 事務歷史記錄中移除的時間加上保留時數而刪除,而不是其在記憶體系統上的修改時間戳。 預設閾值為 7 天。

在 Delta 數據表上,Azure Databricks 不會 自動觸發 VACUUM 作業。

如果您在 Delta 資料表上執行VACUUM,就會失去時間回到比指定數據保留期間還舊的版本的能力

警告

建議您將保留間隔設定為至少 7 天,因為舊的快照集和未認可的檔案仍可供數據表的並行讀取器或寫入器使用。 如果 VACUUM 清除使用中檔案,並行讀取器可能會失敗,或者更糟的是,刪除尚未認可的檔案時 VACUUM ,數據表可能會損毀。 您必須選擇超過執行中最長並行交易的間隔,以及任何資料流程可以延遲至資料表最新更新的最長期間。

Delta Lake 有安全檢查,以防止您執行危險的 VACUUM 命令。 在 Databricks Runtime 中,您確定此資料表上不會執行比您打算指定的保留間隔更久的作業,您可以將 Spark 組態屬性 spark.databricks.delta.retentionDurationCheck.enabled 設定為 false來關閉此安全性檢查。

VACUUM table_name [RETAIN num HOURS] [DRY RUN]

參數

  • table_name

    識別現有的 Delta 數據表。 名稱不得包含 時態規格

  • RETAIN num HOURS

    保留閾值。

  • DRY RUN

    傳回最多要刪除 1000 個檔案的清單。

清空非差異數據表

以遞歸方式清除與非 Delta 數據表相關聯的目錄,並移除超過保留閾值的未認可的檔案。 預設閾值為 7 天。

在非差異數據表上,Azure Databricks 會在寫入數據時自動觸發 VACUUM 作業。

語法

VACUUM table_name [RETAIN num HOURS]

參數

  • table_name

    依名稱或路徑識別現有的數據表。

  • RETAIN num HOURS

    保留閾值。