真空

適用于: check marked yes Databricks SQL check marked yes 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 資料表。 名稱不得包含 時態規格

  • 保留 num HOURS

    保留閾值。

  • DRY RUN

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

清空非差異資料表

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

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

語法

VACUUM table_name [RETAIN num HOURS]

參數

  • table_name

    依名稱或路徑識別現有的資料表。

  • 保留 num HOURS

    保留閾值。