mysql两阶段提交

1. log写入机制

1.1 binlog的写入机制

事务执行过程中, 先把日志写到binlog cache, 事务提交的时候, 再把binlog cache写到binlog文件中。


1.2 redo log的写入机制
1.2.1. 存在redo log buffer中, 物理上是在MySQL进程内存中;
1.2.2. 写到磁盘(write), 但是没有持久化(fsync), 物理上是在文件系统的page cache里面;
1.2.3. 持久化到磁盘, 对应的是hard disk。

2. mysql两阶段提交

2.1 简化版

时序上redo log先prepare, 再写binlog,最后再把redo log commit。


 

2.2 详细版

实际上, 写binlog是分成两步的:1. 先把binlog从binlog cache中写到磁盘上的binlog文件;2. 调用fsync持久化。


 

3. 两阶段提交的作用

3.1 保持数据一致。redo log和binlog都可以用于表示事务的提交状态, 而两阶段提交就是让这两个状态保持逻辑上的一致。

3.2 崩溃恢复 crash safe。数据库崩溃时可以正确恢复数据。

3.3 组提交机制, 可以大幅度降低磁盘的IOPS消耗。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值