Mini Compaction 落盘 MemTable:高效还是隐患?

探讨 Mini Compaction 在落盘 MemTable 时的性能优化与潜在风险。

3 个赞

长风破浪会有时

1.读放大与空间放大:分层结构意味着查询可能需要扫描多个 SSTable(包括 L0、L1、L2 层),增加了读取路径的长度和成本。同时,数据会冗余存在于多个 Mini SSTable 中,造成一定的空间放大。
2.版本数据与空间回收滞后:Mini Compaction(以及后续的 Minor Compaction)属于转储,主要目的是整理增量数据,不会回收多版本数据或删除标记所占用的空间。彻底的数据空间回收和版本清理,需要依赖全局的 Major Compaction(合并)来完成。
3.参数调优的复杂性:minor_compact_trigger、__minor_compaction_amplification_factor 等参数直接影响着转储和合并的频率与行为。不合理的配置可能导致转储过频或过慢,影响系统性能。例如,minor_compact_trigger 设置过小,会频繁触发 L1 层合并,增加写放大;设置过大,则会导致 L0 层堆积过多 Mini SSTable,加剧读放大。

1 个赞