聊聊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标记是指两阶段提交的提交。

相关推荐
CodeClimb2 分钟前
【华为OD-E卷 - 猜字谜100分(python、java、c++、js、c)】
java·javascript·c++·python·华为od
_小柏_3 分钟前
C/C++基础知识复习(46)
c语言·开发语言·c++
ADRU8 分钟前
设计模式-责任链模式
java·设计模式·责任链模式
SomeB1oody9 分钟前
【Rust自学】6.4. 简单的控制流-if let
开发语言·前端·rust
明月逐人归4649 分钟前
输出语句及变量定义
开发语言·python
heeheeai9 分钟前
kotlin 函数作为参数
java·算法·kotlin
m0_7482548825 分钟前
Spring Boot实现多数据源连接和切换
spring boot·后端·oracle
tatasix28 分钟前
Go Redis实现排行榜
开发语言·redis·golang
Just_Do_IT_OK29 分钟前
Docker--MySql
mysql·docker·容器
吴冰_hogan32 分钟前
Java虚拟机(JVM)的类加载器与双亲委派机制
java·开发语言·jvm