//与事务管理和并发控制相关的文件目录结构
storage\innobase
├─btr //B+树索引结构,锁对象施加在索引项上面,而不是直接施加在记录/元组上面
│ btr0btr.cc //索引管理,索引的创建、释放等相关操作
│ btr0bulk.cc //索引上数据的批量操作
│ btr0cur.cc //索引树上遍历对row进行修改等相关的辅助操作
│ btr0pcur.cc //SQL语句中(select、update和delete)对索引树的遍历条件所得到的一些固定属性从而决定索引树的遍历
│ btr0sea.cc //索引树上的查找操作
├─data //物理存储结构:字段和记录
│ data0data.cc //字段和元组级的一些操作
│ data0type.cc //数据类型的判断
...
││
├─lock //存放InnoDB的锁操作相关文件
│ lock0iter.cc //锁的队列管理,初始化锁的队列和获得锁队列中的锁
│ lock0lock.cc //锁的管理,包括锁的授予、回收、死锁检测等操作,是锁操作相关的最主要的文件
│ lock0prdt.cc //谓词锁相关操作,用以实现Next-Key locking算法
│ lock0wait.cc //锁等待相关的操作,包括因锁等待而挂起、释放、检查等操作
│
├─log //日志管理
│ log0log.cc //REDO日志,通过Mini-transaction的mtr_commit()把日志信息写到REDO日志文件中
│ log0recv.cc //恢复操作
...
│
├─mtr //Mini-transaction(事务的重要子部分)相关处理
│ mtr0log.cc //Mini-transaction写日志部分
│ mtr0mtr.cc //Mini-transaction日志首先要刷到日志缓冲,然后可把日志缓冲中的数据顺序刷出到物理存储,节约了IO操作
...
├─page //物理页面操作
│ page0cur.cc //在物理页面上的遍历操作(插入、删除)
│ page0page.cc //索引的叶子节点相关操作。索引只是一棵树,叶子是物理数据
│ page0zip.cc //页面压缩的相关操作
...
│
├─que //Query graph
│ que0que.cc //查询图(query graph)算法的实现,用以判断是否有环存在。在事务管理中用以跟踪事务的执行过程
│
├─read //Cursor read,一致性无锁读
│ read0read.cc //MVCC机制实现的主要代码,用快照隔离技术(InnoDB中称为ReadView)实现一致性无锁读操作
...
│
├─trx //事务管理相关操作
│ trx0i_s.cc //INFORMATION SCHEMA里与事务和锁关联的系统表的相关操作:innodb_trx、innodb_locks、innodb_lock_waits
│ trx0purge.cc //PURGE操作,用于清理旧版本数据
│ trx0rec.cc //UNDO日志相关的操作,侧重于UODO日志中使用到的page和record等相关的操作
│ trx0roll.cc //事务回滚操作相关的内容
│ trx0rseg.cc //回滚段的管理,包括创建、初始化、使用、释放等,rseg的意思是rollback segment
│ trx0sys.cc //事务管理在系统层面的一些相关操作,如事务系统的启动、关闭等
│ trx0trx.cc //事务管理相关的内容,如事务开始、事务提交、事务信息打印输出等动作
│ trx0undo.cc // UNDO日志相关的操作,侧重于UNDO日志管理方面
...