ob的隔离级别是通过什么实现的?

ob的隔离级别是通过什么实现的?

1 个赞

你的问题我们已经收到 ,稍后会回复

1 个赞

OceanBase的隔离级别实现主要依赖于其多版本并发控制(Multi-Version Concurrency Control, MVCC)机制和全局一致的数据版本号管理

1 个赞


这个图 您看下!

1 个赞

在访问mvccrow的transnode的时候,构建fuse row的机制和转储时迭代器的机制是一样的吗,从insert row那一边开始往后读?

1 个赞

(1)首先比较读请求的read_snapshot与待读取行上记录的max_trans_version,如果前者小于后者,则直接读取,不需要等待。如果前者大于后者,并且行锁没有被其他事务持有,则直接读取,不需要等待。如果前者大于后则,行锁被其他事务持有,此时需要进行(2)判断。
(2)如果读写事务处于语句执行阶段,客户端尚未提交,此时读请求必然不用读取该事务的修改。
(2)如果该事务已经开始进入提交流程,目前处于prepare尚未进入commit阶段,那么读请求是否需要读该事务的修改基于如下判断:读请求read_snapshot < prepare_version,则不需要读该事务的修改;否则需要等待,等读写事务提交之后,再基于语句read_snapshot跟读写事务的commit version进行比较,前者大于后者,需要读;否则不需要读。

参考文档:GitHub - oceanbase/oceanbase: OceanBase is an enterprise distributed relational database with high availability, high performance, horizontal scalability, and compatibility with SQL standards.