compact磁盘使用率为什么会形成尖刺

请教个问题,版本号2.6.1,我们从3台机器扩容到5台机器,扩容后balance data balance leader后,没有手动compact,依赖自身周期性的compact回收墓碑数据。在持续大概两周的时间里旧的3台机器的磁盘占用下降很少从84%降低到81%左右。
但是一天夜里旧的3台机器中的两台机器的磁盘使用在大概两个小时时间里降低,另一台的磁盘占用是持续升高形成两个高点,最高超过了90%。
为什么会有这两个升高?

我的理解是在compact时对旧数据垃圾回收造成空间放大。
空间放大:存储采用的数据结构因分裂或临时数据拷贝造成的磁盘空间占用放大。

空间放大取决于还有多少旧数据待垃圾回收。
若每层仅有一个文件,相邻层合并生成新的较大层文件,同一条记录会存在两份,因此空间放大是2。
若每层有多个文件,10倍增长因子,最坏情况下,以最底层达到10TB数据来算,从上一层到最顶层约占1TB多,根据定义,因此空间放大为10/(10-1)=1.11…。
若考虑到merge时暂未删除的旧数据,则空间放大可以认为约1.2。

1 个赞

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。