聊聊Mysql的两阶段提交

从图中可看出,事务的提交过程有两个阶段,就是将 redo log 的写入拆成了两个步骤:prepare 和 commit,中间再穿插写入bin log,具体如下:

  • prepare 阶段:将 事务的修改写入到 redo log,同时将 redo log 对应的事务状态设置为 prepare,然后将 redo log 持久化到磁盘;

  • commit 阶段:将修改写入到 bin log,然后将 bin log 持久化到磁盘,之后将 redo log 状态设置为 commit,(此时该状态并不需要持久化到磁盘,只需要 write 到文件系统的 page cache 中就够了,因为只要 bin log 写磁盘成功,就算 redo log 的状态还是 prepare 也没有关系,一样会被认为事务已经执行成功;)

bin log的事务提交是指mysql的事务提交,redo log的commit标记是指两阶段提交的提交。

相关推荐
m0_5656111312 分钟前
Java-泛型
java·windows
张np15 分钟前
java基础-集合接口(Collection)
java·开发语言
jakeswang19 分钟前
ServletLess架构简介
java·后端·servletless
开始了码23 分钟前
QT:ItemWidgets模块介绍
开发语言·qt
汪汪队立大功12326 分钟前
JavaScript是怎么和html元素关联起来的?
开发语言·javascript·html
奋斗的牛马34 分钟前
OFDM理解
网络·数据库·单片机·嵌入式硬件·fpga开发·信息与通信
搬山境KL攻城狮1 小时前
maven 私服上传jar
java·maven·jar
Mr_Dwj1 小时前
【Python】Python 基本概念
开发语言·人工智能·python·大模型·编程语言
q***56381 小时前
Spring Boot--@PathVariable、@RequestParam、@RequestBody
java·spring boot·后端