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

相关推荐
布朗克1683 分钟前
Go 入门到精通-15-错误处理
开发语言·python·golang·错误处理
再让我睡两分钟4 分钟前
【无标题】
android·java·数据库·人工智能·prompt·ai应用开发
zzb158016 分钟前
Zed 配置 Swift / iOS 开发
开发语言·ios·swift
折哥的程序人生 · 物流技术专研23 分钟前
Java 23 种设计模式:从踩坑到精通 | 番外:工厂方法 vs 抽象工厂 —— 从单产品到产品族,架构如何演进?
java·spring·java面试·抽象工厂·工厂方法·java设计模式·从踩坑到精通
爸爸61924 分钟前
30 原始 SQL 查询与聚合统计:querySql 实战
数据库·sql·华为·harmonyos·鸿蒙系统
砍材农夫26 分钟前
spring|spring event|Spring内置事件驱动编程模型
java·数据库·spring
wuqingshun3141592 小时前
RabbitMQ 中无法路由的消息会去到哪里?
java
北冥you鱼2 小时前
Go-Ethereum (Geth) 最佳实践:从部署到生产环境优化
开发语言·后端·golang
thefool1122662 小时前
Java 方法重载
java
这不小天嘛9 小时前
JAVA八股——J集合篇
java·开发语言