七万号·数据平台实战手记

Back

① 标题党#

主标题Doris 小文件爆炸?Compaction 这个保洁阿姨你必须认识 备选写了一天数据,Doris 卡了?它在偷偷"合文件"

② 开场钩子#

数据是流式导进来的,越导文件越多、越碎。不收拾,查询会越来越慢。Doris 有一个后台保洁机制在默默把碎文件合并成大块——它就是 Compaction。

③ 主角特性:Compaction 机制#

  • LSM 式多版本:每次导入生成一个小版本(memtable → 磁盘)
  • Compaction 把多个小版本合并成一个大版本,减少读取时的文件数、垃圾数据
  • 触发方式:累积量/时间/大小基数触发

:写入速率远大于合并速率时,会出现”合并跟不上”,进入导入降级/拒绝 —— 这是生产里最常见的 Doris 事故之一。

④ 最小可复现#

SHOW TABLES FROM db;  -- 看 tablet 版本计数
-- 手动触发一次 compaction
CANCEL ALTER TABLE ...;  -- 误区
-- 正确:通过 BE 配置 / 等待后台合并
sql

(核心是看懂 version count 与 compaction backlog)

⑤ 结论#

Compaction 是 Doris 的隐形保洁阿姨。它不干活,查询就开始吃灰。看懂它,你才能避开”写太快把 Doris 写崩”的坑。

⑥ 配图脚本#

LSM 版本时间线 / 合并示意 / version 计数监控 / 写放大 vs 读放大


Compaction:小文件太多的'Doris 保洁阿姨'
https://realcpf.tech/blog/doris-04
Author 刘佳成
Published at 2026年9月1日