写点什么

openGauss 数据库源码解析系列文章——事务机制源码解析(一)

作者:daydayup
  • 2023-07-25
    北京
  • 本文字数:515 字

    阅读完需:约 2 分钟

openGauss 数据库源码解析系列文章——事务机制源码解析(一)

一、事务整体架构和代码概览

事务模块总体结构如图 1 所示。



图 1 总体结构


在 openGauss 中,事务的实现与存储引擎的实现有很强关联,代码主要集中在 src/gausskernel/storage/access/transam 及 src/gausskernel/storage/lmgr 下,关键文件如图 1 所示。


(1) 事务管理器:事务系统的中枢,它的实现是一个有限循环状态机,通过接受外部系统的命令并根据当前事务所处的状态决定事务的下一步执行过程。


(2) 日志管理器:用来记录事务执行的状态以及数据变化的过程,包括事务提交日志(CLOG)、事务提交序列日志(CSNLOG)以及事务日志(XLOG)。其中 CLOG 日志只用来记录事务执行的结果状态,CSNLOG 记录日志提交的顺序,用于可见性判断;XLOG 是数据的 redo 日志,用于恢复及持久化。


(3) 线程管理机制:通过一片内存区域记录所有线程的事务信息,任何一个线程可以通过访问该区域获取其他事务的状态信息。


(4) MVCC 机制:openGauss 系统中,事务执行读流程结合各事务提交的 CSN 序列号,采用了多版本并发控制机制,实现了元组的读和写互不阻塞。详细可见性判断方法见“二 事务并发控制”。


(5) 锁管理器:实现系统的写并发控制,通过锁机制来保证事务写流程的隔离性。

用户头像

daydayup

关注

还未添加个人签名 2023-07-18 加入

还未添加个人简介

评论

发布
暂无评论
openGauss数据库源码解析系列文章——事务机制源码解析(一)_daydayup_InfoQ写作社区