本文主要包含以下内容:
1、Compaction 设计空间的四个原语:触发器、数据布局、压缩粒度、数据移动策略。任何已有的compaction策略和新的策略都可以由这个四个原语组建构成。
2、详细介绍这四个原语的定义,策略方法
3、现有的基于LSM的知名系统的compaction策略按照四个原语进行拆解分析。
一、LSM的Compaction是什么?
为了限制磁盘上sorted run的数量(从而快速查找和更好地利用空间),LSM树定期将第 i 层的runs(或部分runs)与第 i+1 层的重叠runs进行排序合并。这个过程就被成为LSM compaction(压缩)。然而,sort-merging数据的过程要求数据在磁盘和数据库内存之间来回移动。这导致了写入放大,在最先进的基于LSM的数据存储中可高达40倍。
为了摊薄数据移动,从而避免延迟峰值,最先进的LSM引擎将数据组织成更小的文件,并以文件而不是level层级的粒度进行压缩。如果i层的增长超过了阈值,就会触发一个compaction,从i层中选择一个文件(或一个文件子集)与 i+1层中