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

openGauss重做日志关键类和数据结构

openGauss小助手 2021-10-24
175

重做日志的关键类和数据结构如表4-39所示。

表4-39 重做日志的关键类和数据结构简介

关键类和数据结构描述
RedoLog类负责事务数据序列化的主要类,它是TxnManager类的成员对象。RedoLog的commit方法由TxnManager在事务通过验证阶段并且所有更新的行均已锁定后在提交协议中调用。在将变更应用到存储之前,RedoLog将在加锁后序列化事务数据,持久化到日志,释放锁。RedoLog使用RedoLogHandler将数据写入日志。RedoLogBuffer类是序列化缓冲区的一个简单实现,RedoLog类通过RedoLogBuffer序列化事务操作。RedoLogBuffer的前4个字节预留给缓冲区大小,在序列化时写入。OperationCode枚举是支持的事务操作列表。RecoveryManager通过根据OperationCode确定如何解析数据并应用事务操作
RedoLogWriter用于将操作序列化到缓冲区中。RedoLogWriter是一个简单的helper类,获取数据和缓冲区,并将数据序列化到缓冲区中
EndSegmentBlock控制块,写在每个flushed缓冲区的末尾。包括事务、CSN、是否提交等信息
EndSegmentBlockSerializer一个简单的helper类,用于序列化和反序列化EndSegmentBlock
Ilogger接口写日志接口的抽象。MOT通过ILogger可以写入不同类型的日志
LoggerFactory一个工厂类,用于创建不同类型的ILogger。LoggerFactory通过MOT配置项确定要创建哪种logger
XLOGLogger基于openGauss XLOG (WAL)的ILogger的一个实现,它简单地使用openGauss WAL接口将序列化的事务写入WAL中。MOT WAL日志项有自己的资源管理器,这可以使openGauss识别到该日志项是一个MOT WAL日志项,并将其转发到MOT处理。AddToLog为XLOGLogger子接口,XLOGLogger使用openGauss日志基础能力。因此,AddToLog是一个对openGauss XLOG接口的简单委托

图4-69所示代码为XLOGLogger::AddToLog接口的实际实现。

图4-69 XLOGger对openGauss XLOG的委托

RedoLogHandler是重做日志逻辑的抽象。RedoLogHandler的派生类可实现不同的日志方法。RedoLogHandler是一个单例模式,由MOT管理,为RedoLog所用。

RedoLogHandlerFactory用于创建RedoLogHandler。MOT根据配置项中配置的RedoLogHandlerType创建RedoLogHandler。

SynchronousRedoLogHandler简单地将RedoLogBuffers委托给ILogger,以便写入重做日志。请参阅前述的同步日志记录小节。

GroupSyncRedoLogHandler是最先进的无锁组提交RedoLogHandler。GroupSyncRedoLogHandler将几个事务的redo log缓冲区分组到一个组,并把他们写在一起,以便优化和最小化磁盘IO。请参阅前述同步组提交小节。CommitGroup表示将一组RedoLogBuffer一起记录。一个提交组有一个主线程,由该主线程创建该提交组,它负责将组内的所有RedoLogBuffer写入日志。主线程写日志时,所有其他线程都在等待。主线程完成写入后将发送信号来唤醒组内其他所有线程,一旦唤醒,事务就可以继续。SegmentedGroupSyncRedoLogHandler是配置了GroupCommit日志方法时的RedoLogHandler。它是RedoLogHandler的一个实现,每个socket都有GroupSyncRedoLogHandler。SegmentedGroupSyncRedoLogHandler的优点在于可以通过维护多个组提交处理程序实现更高的并发。SegmentedGroupSyncRedoLogHandler维护一个GroupSyncRedoLogHandler数组,并将线程绑定到Socket以将线程委托给正确的处理程序。

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

评论