Azure Databricks 資料表的報告大小與雲端物件儲存中對應檔案目錄的總大小不同。 本頁討論了為何存在這種差異,以及控制成本的建議。
為什麼我的資料表大小和目錄大小不一樣?
Azure Databricks 透過介面與 DESCRIBE 指令報告的資料表大小,指的是目前版本資料表中所參考檔案在磁碟上的總資料檔案大小。 寫入數據表的大部分作業都需要重寫基礎數據檔,但舊數據檔會保留一段時間,以支持時間移動查詢。
注意
如果您定期刪除或更新數據表中的記錄,刪除向量可以加速查詢,並減少數據檔的大小總計。 請參見 Databricks 中的刪除向量。
表格的儲存量度計算
適用於:
Databricks 執行時間 18.0 及以上版本
要了解為何總儲存大小與表格大小不同,請使用 ANALYZE TABLE … COMPUTE STORAGE METRICS。 此指令提供詳細的儲存分配細分,幫助您:
-
識別成本優化機會:看看能回收多少儲存空間
VACUUM - 分析時間旅行開銷:了解保留歷史資料的成本
- 追蹤儲存模式:透過定期執行指令,監控資料表儲存隨時間的演變
- 跨資料表的審計儲存:在循環中執行指令,分析整個資料資產
該命令返回全面的指標,包括:
- 總儲存容量:完整容量,包含所有資料、元資料與日誌
- 活動資料:目前資料表版本的大小
- 可真空資料:可回收的空間
- 時間回溯數據:還原的歷史數據
這對於 Unity Catalog 管理的資料表特別有價值,Azure Databricks 會透過 預測優化自動管理儲存。
完整語法與範例請參見 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 移除目前數據表版本中不再參考的數據文件為止。