美文网首页
openGauss源码#事务之txn.cpp文件:事务管理器,用

openGauss源码#事务之txn.cpp文件:事务管理器,用

作者: upup果 | 来源:发表于2020-12-30 10:53 被阅读0次

这个文章其实建了好久了,一直搁着没写.因为一直忙着开会,设计方案,做ppt,静不下心开代码,今天补上吧

TxnManager

  • 类成员
    MemSessionPtr<TxnAccess> m_accessMgr:事务缓存(OCC优化),主要维护着事务的读写集m_rowSet,每个访问的sentinel在这个集合中都会有一个access对象,记录这对这个记录的操作,是事务的核心数据结构.
    还有一些事务的属性,如事务id,提交csn,隔离级别,事务状态(启动,结束,提交等). 还有内存管理的一些工具类成员.
  • 函数
    这个里面封装了很多事务操作的函数.
  1. RowLookup.查找指定行数据,依赖的相关函数有AccessLookup.
  2. 控制事务执行的函数,StartTransaction,Commit(主要是调用occ验证事务冲突),CommitInternal(真正的提交操作,通过occ验证后,调用m_occManager的WriteChanges将操作写入到sentinel,意味着从私有变为共有,其他事务对这个操作的结果可见)
  3. 乐观插入的实现:ExecuteOptimisticInsert,这个是mot的一个重点,在之前的文章有介绍
  4. DDL的操作,如表,索引等的创建和删除:CreateTable,DropTable,CreateIndex
  5. 事务的回滚实现,如RollbackDDLs,RollbackSecondaryIndexInsert,RollbackInsert

相关文章

网友评论

      本文标题:openGauss源码#事务之txn.cpp文件:事务管理器,用

      本文链接:https://www.haomeiwen.com/subject/brjrgktx.html