经过上一篇博客(OceanBase的存储架构与传统LSM-Tree架构的异同)的分享,我相信大家已经理解了 LSM-Tree 中 compact 流程的重要性,它是平衡读、写性能与空间放大这个3个因素之间的关键流程。本篇文章,我们就来共同探讨一下OceanBase数据库中具体包含了哪些compact过程。
不知道大家有没有查看过ob_compaction_util.h源码文件,这里我们把文件里的 ObMergeType
枚举值拎出来,去掉一些无关的类型,可以看到有一系列M开头的Merge类型:
enum ObMergeType
{
MINOR_MERGE = 0,
...
META_MAJOR_MERGE = 2,
MINI_MERGE = 3,
MAJOR_MERGE = 4,
MEDIUM_MERGE = 5,
...
};
这些就是OceanBase里主要的几种compact过程,我们可以把他们称作“M系列”的Merge。
暂停30秒,对比官网的这张图,大家能否找到以上几种Merge所对应的行为呢?
时间到了,让我来为大家揭秘吧~
图中Fro