MySQL事务提交流程时序图
网上的资料有点乱,所以特画此图,来看事务操作的主要流程,此图为事务处理的简化时序图,在处理细节上省略了和多线程复制相关的操作,innodb各个阶段的详细操作,重在说明流程。
一、简化版的事务处理时序图
时序图说明
关于此图的必要性说明
- 如果你想了解group commit的详细机制,此图不适合,因为此图忽略了组提交的细节。
- 如果你想了解Innodb落盘机制,此图不适合,因为也忽略了。
- 此图基于Oracle MySQL-5.7.18 社区版
- 省略了server通过handler操作storage在整个事务处理过程中的关系
- 省略了innobase的各个阶段的详细操作
- TC_LOG在MySQL开启binlog时,其实就是MYSQL_BIN_LOG,MYSQL_BIN_LOG同时作为事务协调者和事务参与者,所以图中存在TC这个层级,所有TC的处理其实是MYSQL_BIN_LOG的处理,TC封装了接口供上层调用。
- 资源管理器并不是向TC注册,但是此图省略了这部分内容,显示为向TC注册。因为最终在事务提交操作时,TC会遍历资源管理器来进行操作。
- 此图在缺少本说明的情况下,不要随意复制粘贴,以免引起读者的误会。
- 此图源自于源码,但是不涉及源码。
- 能力有限,对于代码的理解也有限,画图水平更有限,有错误请指正。
时序图如下:
二、流程简介
如下是对时序图的