文章 · 缓存

日志结构缓存的读写代价

日志结构把写入变成顺序追加,换来了极高的写吞吐,代价是读取要跨多段查找、空间要靠后台整理才能回收。

写为什么快

所有写操作都追加到文件末尾,不做原地更新,省掉了随机写的寻道成本。顺序写的吞吐通常比随机写高一个数量级。

读为什么贵

同一个键可能散落在多个段里,读的时候要从最新段往回找,命中之前可能要翻好几处。索引的质量直接决定读性能。

空间靠整理回收

追加写入会产生大量过期数据,后台需要定期把有效部分合并重写。整理策略选得不好,写入放大就会把顺序写的优势吃掉。

顺序写不是免费的,它把成本从写入挪到了读取和整理。

评论13

访客

登录后参与评论,你的发言会署上自己的名字。

  • 林深

    林深作者@linshen2026-07-30

    先占个位:文里的数字都是本地实测的,测试环境写在文末备注里,有疑问直接在这儿回。

  • 于野

    于野@yuye2026-07-31

    跨包依赖没进图这个坑我们也踩过,当时查了整整两天才定位到。

  • 秦舟

    秦舟@qinzhou2026-08-01

    建议再加一条:定期跑一次无缓存的全量构建做对照。

  • 段然

    段然@duanran2026-08-02

    缓存只能加速、不能当真相,这句话值得贴在看板上。

  • 于野

    于野@yuye2026-08-03

    我们踩过一次,缓存里的数据比库里旧了两个版本,排查了很久。

  • 段然

    段然@duanran2026-08-03

    认同结论,但我觉得前提是团队规模够大,小团队可能撑不起这套流程。

  • 于野

    于野@yuye2026-08-04

    真正难的不是方案本身,是让大家都愿意按方案做。