h5n1
(H5n1)
1
请教几个关于compaction的问题
1、 下面的帖子中提到 定期进行compaction 10分钟一次。这个定期是如何触发的?有没有相关参数配置?
2、 region-compact-check-interval 参数说的‘检查是否需要人工触发rocksdb compaction’ 是什么意思?
3、下面的帖子提到 ‘业务存在大量读取,但只有小量写操作,不足以触发 compaction’ ,这里的触发compaction应该是指达到rocksdb 每层的trigger值吧?虽然每次update量很少但是累积起来为什么也没有触发compaction? 按照第1个问题的帖子描述 10分钟一次定期compaction,这里应该能再开启gc in compaction filter的情况下进行GC啊。
1 个赞
图中这每一层进行compaction的阈值有对应配置项吗,或者有没有对应的文档说明
问题2:
rocksdb.max-background-jobs
和 rocksdb.max-sub-compactions
RocksDB 线程池是进行 Compact 和 Flush 任务的线程池,默认大小为 8。这明显超出了实际可以使用的资源,需要限制。 rocksdb.max-sub-compactions
是单个 compaction 任务的子任务并发数,默认值为 3
,在写入流量不大的情况下可以进行限制。
在官方文档中没有找打level1 大小来源 这个可以单独开个问题
根据上图 level 1的大小 是 一个memtable 压缩后的大小*4所得 ,
纠正一点: 这里 256MB是level 1层级的所有大小非单个sst
1 个赞
此图中的每个leve n 后的每个值是指 整个level 层级的大小, 非单个sst文件
图一:
图2:
如上2张图 level 1 的默认值 如图一 ,三个参数对应的三个默认值,参数事例如图2
rocksdb.defaultcf.max-bytes-for-level-base
rocksdb.writetcf.max-bytes-for-level-base
rocksdb.lockcf.max-bytes-for-level-base