购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 MySQL事务流程

MySQL的事务流程分为MySQL事务执行流程和MySQL事务恢复流程,本节对MySQL的事务流程进行简单的介绍。

2.4.1 MySQL事务执行流程

2.1~2.3节详细介绍了Redo Log、Undo Log和BinLog,MySQL事务执行的过程中,主要是通过Redo Log和Undo Log实现的。

MySQL事务执行流程如图2-11所示。

从图2-11中可以看出,MySQL在事务执行的过程中,会记录相应SQL语句的Undo Log和Redo Log,然后在内存中更新数据并形成数据脏页。接下来Redo Log会根据一定的规则触发刷盘操作,Undo Log和数据脏页则通过检查点机制刷盘。事务提交时,会将当前事务相关的所有Redo Log刷盘,只有当前事务相关的所有Redo Log刷盘成功,事务才算提交成功。

图2-11 MySQL事务执行流程

2.4.2 MySQL事务恢复流程

如果一切正常,则MySQL事务会按照图2-11中的顺序执行。实际上,MySQL事务的执行不会总是那么顺利。如果MySQL由于某种原因崩溃或者宕机,则需要进行数据的恢复或者回滚操作。

按照图2-11所示,如果事务在执行第8步,即事务提交之前,MySQL崩溃或者宕机,此时会先使用Redo Log恢复数据,然后使用Undo Log回滚数据。如果在执行第8步之后MySQL崩溃或者宕机,此时会使用Redo Log恢复数据,大体流程如图2-12所示。

图2-12 MySQL事务恢复流程

如图2-12所示,MySQL发生崩溃或者宕机时,需要重启MySQL。MySQL重启之后,会获取日志检查点信息,随后根据日志检查点信息使用Redo Log恢复数据。如果在MySQL崩溃或者宕机时,事务未提交,则接下来使用Undo Log回滚数据。如果在MySQL崩溃或者宕机时,事务已经提交,则用Redo Log恢复数据即可。 paku4YX4UAHtV2zs1EPqLbQQ1F5u0FhnFVxrSTwbk09dvZoLpLdOI4B6YCLTEDgs

点击中间区域
呼出菜单
上一章
目录
下一章
×