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

相关推荐
X***078819 小时前
从底层逻辑到工程实践,深入理解C语言在计算机世界中的核心地位与持久价值
c语言·开发语言
晚枫歌F19 小时前
io_uring的介绍和实现
开发语言·php
TDengine (老段)19 小时前
TDengine Python 连接器入门指南
大数据·数据库·python·物联网·时序数据库·tdengine·涛思数据
Good_Starry20 小时前
Java——反射
java
时光追逐者20 小时前
TIOBE 公布 C# 是 2025 年度编程语言
开发语言·c#·.net·.net core·tiobe
花归去20 小时前
echarts 柱状图曲线图
开发语言·前端·javascript
又是忙碌的一天20 小时前
SpringBoot 创建及登录、拦截器
java·spring boot·后端
萧曵 丶20 小时前
事务ACID特性详解
数据库·事务·acid
2501_9418705620 小时前
面向微服务熔断与流量削峰策略的互联网系统稳定性设计与多语言工程实践分享
开发语言·python
modelmd20 小时前
Go 编程语言指南 练习题目分享
开发语言·学习·golang