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

相关推荐
我命由我12345几秒前
Android Drawable - gradient
android·java·java-ee·kotlin·android studio·android-studio·android runtime
clear sky .1 分钟前
[freertos源码阅读]task.c任务篇
c语言·开发语言
MC皮蛋侠客2 分钟前
Redis 系列(三):底层实现(一)——对象系统、SDS 与 dict
数据库·redis·缓存
杜子不疼.4 分钟前
不会SQL也能改数据库?我用NocoDB把MySQL变成了表格界面
数据库·sql·mysql
今天AI了吗10 分钟前
AI辅助数据库工具链对比:从SQL优化到架构设计的主流方案评估
数据库·人工智能·sql
XR12345678822 分钟前
工业园区整体组网,方案对比怎么选?
开发语言·php
东东最爱敲键盘27 分钟前
day9.C++多态之虚函数
开发语言·c++
码云数智-园园35 分钟前
类似小鹅通的知识付费小程序平台有哪些
开发语言
淡海水35 分钟前
15-07-YooAsset面试篇-Unity性能优化与内存管理
java·unity·面试·性能优化·c#·游戏引擎
snow@li42 分钟前
Java:跨平台原理与JDK、JRE、JVM全景深度解析
java·开发语言·jvm