Delta Lake 和 Apache Iceberg 資料表的報告大小與雲端物件儲存中對應檔案目錄的總大小不同。 這些資料格式保留了先前版本的資料檔案,以便進行時間旅行查詢。 資料檔案只有在 VACUUM 超過保留閾值後執行時才會被移除。 請參閱 使用真空移除未使用的數據檔。
為什麼資料表大小與目錄大小不同
Azure Databricks 透過 UI 與DESCRIBE指令報告的資料表大小,指的是目前資料表版本中所參考檔案的儲存檔案總大小。 大多數寫入資料表的操作都需要重寫底層資料檔,並保留舊資料檔以允許時間旅行查詢。
注意
如果您定期刪除或更新數據表中的記錄,刪除向量可以加速查詢,並減少數據檔的大小總計。 請參見 Databricks 中的刪除向量。
表格的儲存量度計算
適用於:
Databricks 執行時間 18.0 及以上版本
要了解為何總儲存大小與表格大小不同,請使用 ANALYZE TABLE … COMPUTE STORAGE METRICS。 此指令顯示詳細的儲存分配明細,幫助您:
-
識別成本優化機會:看看能回收多少儲存空間
VACUUM - 分析時間旅行開銷:了解保留歷史資料的成本
- 追蹤儲存模式:透過定期執行指令,監控資料表儲存隨時間的演變
- 跨資料表的審計儲存:在循環中執行指令,分析整個資料資產
該命令返回全面的指標,包括:
- 總儲存容量:完整容量,包含所有資料、元資料與日誌
- 活動資料:目前資料表版本的大小
- 可真空資料:可回收的空間
- 時間回溯數據:還原的歷史數據
這對於 Unity Catalog 管理的資料表特別有價值,Azure Databricks 會透過 預測優化自動管理儲存。
查看ANALYZE TABLE … COMPUTE STORAGE METRICS以獲取完整語法與範例。
使用預測性優化來控制數據大小
Databricks 建議使用已啟用預測優化的 Unity 目錄受控數據表。 透過管理資料表與預測優化,Databricks 會自動執行 OPTIMIZE 並 VACUUM 下指令防止未使用資料檔案堆積。 預期目前數據表版本與雲端物件記憶體中數據檔的大小總計之間一律會有差異。 目前版本中未被引用的資料檔案必須支援時間旅行查詢。 請參閱 Unity Catalog 管理資料表的預測性優化。
VACUUM 儲存體指標
當您使用 VACUUM 清除未使用的數據檔,或使用 DRY RUN 預覽設定移除的檔案時,計量會報告已移除的檔案數目和數據大小。 被移除 VACUUM 的檔案大小和數量差異很大,但被移除的檔案大小常常會超過目前版本的表格總大小。
OPTIMIZE 儲存體指標
當 OPTIMIZE 在目標數據表上執行時,新的數據檔會結合現有數據檔中的記錄。 在 期間 OPTIMIZE 所進行的變更僅影響資料組織,底層資料內容不會發生變動。 執行後 OPTIMIZE ,資料表底層資料檔案的總大小會增加,因為新壓縮的檔案與舊的未優化資料檔案共存於包含目錄中。
在 OPTIMIZE 之後回報的數據表大小通常小於執行 OPTIMIZE 之前的大小,因為目前數據表版本所參考的數據檔大小總計會隨著數據壓縮而減少。 若要移除底層資料檔案, VACUUM 必須在保留閾值超過後執行。
注意
您可能會看到類似操作的指標,例如 REORG TABLE 或 DROP FEATURE。 需要重寫數據檔的所有作業都會增加包含目錄中的數據大小總計,直到 VACUUM 移除目前數據表版本中不再參考的數據文件為止。