memstore中同时会存在多个冻结的memtable吗?

1 memstore中是否可以同时有多个冻结的memtable。

2 每个冻结的memtable大小为多少,占memstore多大比例,是否为freeze_trigger_percentage的设置值。

1.可以
2.每个冻结的memtable大小可以理解为freeze_trigger_percentage所限制的阈值

关于第2点,我也以为是这样的,但有官方工作人员说不是这样,他说“这个只是个阈值,到达后就开始触发转储,所有能转出的都会落盘”。。。

另外,假如一个大事务已经使用了memstore的freeze_trigger_percentage比例,但事务还未结束,此时是否触发冻结?如果冻结,未完成的事务怎么办?

通常来说(这里我理解是active memtable,这一点我会去确认一下) 达到freeze_trigger_percentage后会冻结,然后自动触发转储,因此冻结memtable和mini sstable的大小都是由freeze_trigger_percentage控制的。

3.0以后支持转储未提交事务。冻结后的memtable和mini/minor sstable上允许存在未提交事务,会有事务状态表来维护未提交事务的状态,当未来提交之后会在minor merge过程中,在生成新sstable时将这些事务状态回填到sstable。

哦哦,谢谢镜水老师,这点在官方文档里有么,我没有看到相关介绍。
如果文档中有,麻烦镜水老师给个链接。

找到了,谢谢镜水老师
https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000945292

我遇到了多个线程并发对几个大表加索引报内存不足错误。
前面并发插数据都没报错

能提供更多信息吗,包括observer版本,具体的报错信息以及observer.log*中的相关报错内容

sysbench报错信息:
SQL error, errno = 4013, state = ‘HY001’: No memory or reach tenant memory limit
observer.zip (4.8 MB)

主要还是服务器配置太低,又想大并发跑sysbench
sysbench主要参数为:
–table_size=5000000
–tables=300
–threads=50

你提供的日志里没看到什么有效信息,按你的描述来看,可能单纯是资源不足导致的。
这个帖子我先结了,sysbench出错的问题你可以再发个帖详细描述一下。

萌新好奇想问一下,如果服务器突然掉电,是不是memtable里面的内容就全丢失了? 如果memtable里面有完成的事务,数据也可能丢失?(还没有落盘)

写memtable前会写redo log(clog)。
通过paxos协议保证多数派节点日志写盘成功后才会写memtable。