oceanBase 4.0 以后 废弃了 v$ob_trans_table_status 这个事务图 请问脏事务信息存储在哪呢?

oceanBase 4.0 以后 废弃了 v$ob_trans_table_status 这个事务图 请问脏事务信息存储在哪呢?
在从sstable中 读取数据时,如果里面有脏事务数据,根据啥取更正脏事务涉及的行记录锁和事务状态

还有 在MINOR_MERGE merge 之前 如果事务 提交/回滚了时 如何 更正sstable中脏事务的 数据状态

__all_virtual_trans_stat 看看。

虚拟表 __all_virtual_trans_stat 可用于查询系统中当前所有的活跃事务,
假如 我一个大事务 未提交时,触发了memtable->sstable的 转储, 这个时候大事务提交了,这样 这个表就不记录 这个大事务的相关信息了吧。这时 又触发了MINOR_MERGE 将多个mini sstable合成一个更大的mini sstable,这个时候咋判断 咱事务状态 ,是提交 还是回滚的?

3.x版本__all_virtual_trans_table_status可以查你转储未提交的这种脏事务,4.x不叫脏事务了,转储未提交的事务可以从__all_virtual_tx_data查

__all_virtual_trans_stat,可以查询到当前还未结束的事务上下文状态。说明一下,__all_virtual_trans_stat展示的是整个集群中,未结束事务的参与者上下文信息,包括主机和备机。

但是 sstable中 未提交的 事务 状态 改 怎么 更新呢? 依据是啥呢? 看文档3.x以后oceanBase就允许 含有未提交事务的 memtable 转储到sstable中了 ,ob行中存储了 锁以及事务状态, 事务在内存中提交后,持久化在文件中的脏数据 咋更正呢?

如果 事务未提交 感觉 还可以 在 读取sstable 时 根据 __all_virtual_trans_stat 这个事务 更正一下 脏事务 ,但是如果已经提交了,这些脏事务的状态 不知道 在哪记录…

可能 我问题 描述的 不太清楚。我再重新 问一下哈
oceanBase允许 含有未提交事务的 memtable 转储到sstable中,
假如,一个长事务 未提交,但是事务日志超过2M了,所以自动产生了clog,并写入了memtable(假如写入的是 insert into t1 (1)(2)(3)(4)) , 这时触发了memtable->sstable的 转储,1234四条数据写入sstable 记录上有锁,事务状态未提交, 这个时候这个长事务又insert 了 5 6 7 8 然后提交 成功了, 过一会,另一个会话要删除1234 ,这时从sstable 里面读取到 1234 的数据 显示 有锁,未提交,但是 事务id已经不存在了,这时咋处理呢?

4.x不叫脏事务了,转储未提交的事务可以从__all_virtual_tx_data查

sstable查询时检查未提交事务的状态不是靠这个虚拟表,是靠查内部维护的所谓“事务状态表”

哦~ 明白了,,,相当于 内部 有一个 记录这些 转储未提交的 “事务状态表”,根据这个上面的记录去更改这些相关行数据状态,, 多谢两位 大佬