暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MogDB数据库Commit Sequence Number(CSN)解析

由迪 2024-03-02
146

原作者:范计杰

MogDB数据库中Commit Sequence Number简称CSN,使用一个全局自增的长整数作为逻辑的时间戳,模拟数据库内部的时序,与ORACLE中的SCN类似,该逻辑时间戳被称为提交顺序号。每当一个事务提交的时候,在提交序列号日志中(CSN LOG)会记录该事务号XID(事务的全局唯-标识)对应的逻辑时间戳(CSN值)。

CSN日志中记录的XID值与CSN值的对应关系,即决定了所有事务的状态函数f(t)。

如图所示,在一个事务的实际执行过程中,并不会在开始就加载全部的CSN日志,而是在扫描到某条记录以后,才会去CSN日志中查询该条记录头部xmin和xmax这两个事务号对应的CSN值,并基于此进行可见性判断。称为基于逻辑提交时间戳的可见性判断。是对PG中可见性判断时查询活跃事务组的改进。

img

PG的可见性判断如下:

img

PG在获取查询快照时需要获取活跃事务列表,Mogdb虽然不用获取活跃事务列表,但在读取tuple后需要查询XMIN,XMAX对应的CSN。哪种方式更高效个人还没有搞清楚,可能Mogdb在高并发的事务处理时更有优势,因为OLTP环境中活跃事务较多,并且多数基于索引的查询,需要XMIN,XMAX转CSN的记录很少。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论