加载中...

Compaction(合并压实)是 LSM 树架构数据库的后台维护过程:将多个 SSTable 文件归并排序、丢弃被覆盖的旧版本和已删除数据(墓碑),生成更少、更有序的新文件。
Leveled compaction(分层)将数据组织为逐层放大的层级,每层内键区间不重叠,读放大与空间放大低但写放大高,LevelDB、RocksDB 默认采用;Tiered compaction(分级)在同层堆积多个可重叠的文件,达到数量后整体合并,写放大低但读放大与空间放大高,Cassandra 的 STCS 属于此类。此外还有 FIFO(按时间淘汰,适合时序)等策略。
Compaction 直接决定 LSM 系统的三大放大指标:写放大、读放大、空间放大,三者不可兼得(RUM 猜想)。
compaction 与前台流量争抢 IO 和 CPU,可能造成延迟毛刺;限速、错峰、分区级调度是常见治理手段。

登录 后参与讨论
暂无讨论,来发表第一条评论吧