L0层触发条件: SST文件个数达到level0-file-num-compaction-trigger
L1层触发条件: 总数据量达到max-bytes-for-level-base
那么L2及以上层呢?
L2层可以参考L1 层的触发条件,就是数据量会更大…
rocksdb有2中compact的策略,level 0是tired compaction,当sst文件数量达到一定值后向下压缩,由参数level0-file-num-compaction-trigger控制。level-1往下是 leveled compaction,由参数max-bytes-for-level-base 、max-bytes-for-level-multiplier 控制每层的最大大小,最大层数由num-levels控制,compact时会计算每层分数,分数就是 总容量和最大容量比值,当达到每层的最大容量大小后会选择分数最大的层开始往下compact.
https://docs.pingcap.com/zh/tidb/stable/tikv-configuration-file#max-bytes-for-level-multiplier
看这个参数,上一层的最大容量 乘以 max-bytes-for-level-multiplier
,默认是10倍。
意思是在L2以下层级,触发条件是max-bytes-for-level-multiplier,即本层数据增长超过下层的10%时触发吗?
不是,是达到本层的最大容量时,会触发compaction,本层最大的容量的计算方式是, max-bytes-for-level-base
* max-bytes-for-level-multiplier
^(n - 1),比如,默认情况下, Level1 最大容量是 512M * 10^(1-1) = 512M,Level2 就是 5120M,以此类推
1 个赞
懂了,感谢
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。