关于ob 触发compaction的条件

【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】4.0
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【问题现象及影响】
https://open.oceanbase.com/activities/4921877?id=4921912
在观看视频时,作者有提到当某一level 存储数据量达到阈值时 会触发跟下一层的合并。
这个阈值是多少? 有参数控制么

【附件】

https://open.oceanbase.com/blog/1532404736

之前学习这部分内容总结的,可以参考下。

谢谢。
请教下 一个Mini SSTable的大小是不是等同freeze trigger配置的大小啊?
比如你文中配置的是 0.3G,那么当memstore使用达到0.3 触发冻结 生成Frozen Memtable,再刷新到MiniSSTable,是不是这个minisstable 就是 0.3G内存的数据量?

是如你所说的

是的,我目前也是这样理解的

你好,我想请问下当内存使用超过阈值即将触发转储时,是当前机器当前租户管理下的所有表一起转储吗,例如当前租户有两张表,一张表内存持续写入,另一张表内存只有两条数据,由于第一张表prepare数据持续写入触发转储,是否会带着第二张表一起生成两个mini sstable,此外转储后不可变的MemTable何时回收,是否有缓存预热之类的机制。

  1. 当内存使用超过阈值即将触发转储时,是当前机器当前租户管理下的所有表一起冻结转储
  • 下个版本开始会有其它机制来让每个分区自主发生冻结转储
  1. 转储后的memtable等待之前依赖的查询释放掉引用计数后即可回收
  2. 转储过程中有对元数据的预热

感谢大佬的回复,还想请问一下Slog文件在转储合并中的作用,如果没有SLog,对转储合并会有什么影响

slog有点类似转储合并的redo log

是的,他记录了创建sstable修改超级快等元数据的操作,意思是数据修改是实时的但是元数据宏块是异步的吗,这样设计的目的是什么嘛

这就是最基础的wal原则了, 元数据也是数据
但是因为这部分是没法走clog的, 所以会有slog这一套机制

所以在记录了slog后,元数据应该没有实际刷盘吧,实际刷盘要等到下次做checkpoint的时候,这段时间内一直使用的都是内存中的元数据吧,话说大佬的名字一天一个样

嗯 差不多可以这么理解
或者说在下次重启的时候, 这个元数据是没法直接拿到的, 必须通过checkpoint + slog回放来找到

嗯,最近在学习合并的代码发现slog是在dag调度finish task的时候写的,这块dag拆分一个合并任务分成三部分主要目的是什么,dag会减少资源冲突吗

拆任务是为了并行