转储合并触发条件

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【问题现象及影响】
目前存储是Mem+L0+L1+L2,MemTable->L0是内存阈值参数控制默认20%,L0->L1是通过内部参数计算写放大阈值来确定的,请问这个写放大是怎么衡量的,出于什么考虑,L1->L2是通过major_compact_trigger决定的,目前版本该参数默认为0,是永远不触发大合并的意思吗
【附件】

以及基于宏块的增量合并是只有在major freeze的时候使用吗,平常的L0->L1转储都会重写宏块吗

  1. L0->L1分为两类,一类是多个mini sstable合成一个更大的mini sstable,一类是多个mini sstable和minor sstable合成minor sstable。由两个参数决定,minor_compact_trigger表示允许存在的mini sstable的最大数量,超过该值时会触发L0->L1。_minor_compaction_amplification_factor隐藏配置项,是写放大的一种体现,当选择的多个mini sstable与minor sstable的总行数比值超过该值时,选择多个mini和minor合成minor,否则只需要将多个mini合成mini。
  2. major_compact_trigger为0,是表示不通过这种方式(即冻结多少次后触发)触发合并,但仍然是有每日的自动合并
  3. 转储也有宏块重用


谢谢!这里描述是否有问题?以及在学习代码时发现,计算写放大时,会计算小sstable占大sstable大的行数比例,请问L0和L1在内部是靠大小区分吗

major_compact_trigger取值为 0 时,表示关闭小合并,应该就是关闭转储的意思

1.描述存在问题,这里是指关闭这种方式的合并触发机制。建议你通过如下方式反馈给文档同学 来一起更新OceanBase的产品说明书吧~
2.L0和L1结构上是同一种sstable,只是通过大小区分成了逻辑上的mini和minor

好的谢谢!