Lakehouse 小文件合并优化指南(OPTIMIZE)
概述
在数据仓库中,频繁的小批量写入(如实时 CDC、流式导入)会导致表底层产生大量小文件,严重影响查询性能。云器 Lakehouse 提供
OPTIMIZE 命令,自动将小文件合并为更大的文件,减少 I/O 开销并提升查询速度。本指南按业务场景分类,帮助你快速掌握小文件合并的方法。
涉及的 SQL 命令
| 命令 | 用途 | 适用场景 |
|---|---|---|
| 全表小文件合并 | 定期维护,提升整体查询性能 |
| 分区级合并 | 仅合并特定分区,节省资源 |
| 开启自动合并 | 实时写入场景自动维护文件健康 |
前置准备
以下示例使用模拟的日志表
logs_optimize:
全表小文件合并
使用
OPTIMIZE 命令合并整表的小文件。
执行说明:
- 系统会扫描表的所有数据文件,将小于阈值的小文件合并为大文件。
- 如果表本身文件数较少或已处于健康状态,可能返回
,表示无需合并。No compaction job generated - 合并过程不影响正在进行的查询,新旧文件通过 MVCC 平滑切换。
分区级合并
如果表已按日期分区,可仅合并特定分区,避免全表扫描带来的资源消耗。
查看合并效果
合并完成后,可通过
DESC HISTORY 或文件统计查看优化效果。
返回信息:
:操作类型(OPTIMIZE)operation
:总行数(不变)total_rows
:存储大小(通常因压缩而减小)total_bytes
自动合并配置
对于实时写入场景,手动执行
OPTIMIZE 可能不够及时。可开启自动合并功能。
效果:
- 每次
或INSERT
提交后,系统自动触发后台小文件合并。DELETE - 适合流式数据接入(如 Kafka Pipe、CDC 同步)场景。
清理测试数据
完成优化验证后,建议清理测试表:
注意事项
- 执行时机:建议在业务低峰期执行
,避免与高优先级查询争抢计算资源。OPTIMIZE - 频率控制:无需每天执行。通常每周或每月执行一次即可维持文件健康。
- 存储变化:合并后文件数量减少,但总数据量可能因压缩算法略有变化。
- 动态表:Dynamic Table 的刷新过程会自动处理底层文件,通常无需手动
。OPTIMIZE - 资源消耗:
是计算密集型操作,会消耗 VCluster 的 CPU 和内存资源。OPTIMIZE
相关文档
联系我们
