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

相关推荐
MayBaymax14 分钟前
MQ 基础概念与架构
java·中间件·架构·java-rocketmq
逗脑IDE20 分钟前
零基础学ESP32:RFID无线射频卡——让ESP32拥有“刷卡“能力!
开发语言·网络·人工智能·python·esp32·硬件开发
Dovis(誓平步青云)22 分钟前
家里设备越来越多,如何用一张空间地图控制灯光和温度![
android·java·前端·javascript·人工智能·电脑
小师兄吃牛肉23 分钟前
C语言篇:内联函数
c语言·开发语言
程序员清风23 分钟前
CSV、Excel 与数据库数据读取实践
数据库·oracle·excel
yuniko-n40 分钟前
【Java】字符串相关坑点
java·开发语言·python
GEO实战经验分享40 分钟前
GEO技术与工具全景:从监测仪表盘到Schema的实战指南
数据库
Terra.K42 分钟前
Spring AI day1(SSE+AI)
java·人工智能·spring·springai
斑鸠喳喳44 分钟前
线程本地存储 ThreadLocal
java·后端
一个天蝎座的程序猿44 分钟前
IoTDB集群扩容:从慌乱到从容的经验分享
数据库