Databricks Delta是否需同时执行Optimize和Vacuum 执行顺序如何
Databricks Delta运维操作常见问题解答
问题1:日常运维中是否有必要同时调用Optimize和Vacuum?
绝大多数生产级Delta表的运维场景中,同时定期执行两个操作是非常有必要的,二者解决的运维痛点完全不重叠:
Optimize的核心作用是优化数据布局:通过合并小文件、可选按列做数据共置,大幅降低文件元数据开销,提升表的读写查询性能。但该操作仅会将原有待合并的小文件在事务日志中标记为过时,不会物理删除这些废弃文件。Vacuum的核心作用是释放存储资源:物理清理所有超过保留阈值的过时废弃文件,避免存储目录中无效文件持续堆积,既节省存储成本,也能防止文件量过大拖慢存储层的目录枚举性能。
注意:执行
Vacuum前请确认保留阈值符合你的表时间回溯需求,默认7天的保留期可满足大多数场景的回滚需求,不要随意降低阈值避免无法恢复到历史版本。
问题2:两个操作的最优执行顺序是哪一种?
最优顺序为先执行Optimize,后执行Vacuum,原因如下:Optimize运行过程中会产生大量新的废弃文件,先完成全部数据布局优化后再执行Vacuum,可以一次性清理所有符合保留规则的废弃文件,避免无效的存储资源占用。如果反过来先执行Vacuum再执行Optimize,本次Optimize产生的废弃文件无法在当次运维任务中被清理,需要等到下一次Vacuum运行才会被删除,会额外占用至少一个运维周期的存储资源。
内容的提问来源于stack exchange,提问作者Jerry Nixon
相关产品推荐
相关产品推荐

