MySQL之二阶段提交

作者: 七喜丶 | 来源:发表于2021-11-13 20:43 被阅读0次

个人理解:

Mysql的二阶段提交和Mysql的事务相辅相成,甚至可以说是辅助事务的存在。为何这样说了?事务是服务于数据库进行update、delete、insert操作时,也就是说只要对于数据库中的数据产生变化就会进行事务管理。而二阶段提交也是基于事务的原理进行数据的管理。两者的目的就是为了使数据库中的数据安全且保存一致性。

二阶段提交

不得不提的二个两个日志:redo logbinlog

为什么会有两份日志呢?因为最开始 MySQL 里并没有 InnoDB 引擎。MySQL 自带的引擎是 MyISAM,但是 MyISAM 没有 crash-safe 的能力,binlog 日志只能用于归档。而 InnoDB 是另一个公司以插件形式引入 MySQL 的,既然只依靠 binlog 是没有 crash-safe 能力的,所以 InnoDB 使用另外一套日志系统——也就是 redo log 来实现 crash-safe 能力

redo log binlog
属于 Innodb Mysql Server
可使用 Innodb引擎特有的 所有引擎都可以使用
日志类型 物理日志 逻辑日志
记录方式 在某个数据页上做了什么操作 给ID=1这一行的C字段加1或减1
写入方式 循环写入 追加写入

binlog
binlog(二进制,归档)日志主要有两个作用:

  1. 主从复制
  2. 数据恢复

redo log
数据在磁盘(数据库)中是按照主键顺序存储的,在对数据进行事务操作的时候,既修改数据又可能对其他数据增删操作,如果每次都写进磁盘是很耗性能

redo log这里就用到的WAS技术,WAL的全称是Write-Ahead Logging,它的关键点是先写日志再写磁盘,并且写日志是顺序写速度很快

理解成当有一条记录需要进行事务的时候,InnoDB 引擎就会先把记录写到redo log,并更新内存,然后需要binlog记录后,才算事务提交成功,同时Innodb引擎会在适当的时候讲这个操作更新到磁盘里面

Innodeb的redo log是固定大小的,比如可以配置为一组4个文件,每个文件的大小是1GB,那么总共可以记录4GB的操作,从头开始写,写到末尾就又会到开始循环。当然当大小不够的时候会讲数据刷新到磁盘(数据文件内)

二阶段提交内部流程

  1. 当进行增删改操作时,执行器会执行此操作的SQL语句,并且开启事务
  2. 执行器会通知存储引擎在内存中查询是否有该数据存在,否则会去查询数据库获取数据
  3. 对数据进行相应的操作,并且更新内存相对的数据信息和在redolog日志中记录操作,其状态为:prepare
  4. 在binlog(归档日志)记录详细的操作后,更新redolog的状态为:commit
  5. 事务提交,结束操作

相关文章

  • MySQL之二阶段提交

    个人理解: Mysql的二阶段提交和Mysql的事务相辅相成,甚至可以说是辅助事务的存在。为何这样说了?事务是服务...

  • MySQL更新流程——两阶段提交

    两阶段提交的目的是什么 MySQL使用两阶段提交主要解决 binlog 和 InnoDB redo log 的数据...

  • 一致性协议之三阶段提交

    原文地址:《一致性协议之三阶段提交》 在上一篇文章《一致性协议之二阶段提交》中介绍了二阶段提交协议的设计和原理,也...

  • mysql两阶段提交

    1.两阶段提交 MySQL中经常说的WAL技术,WAL的全称是Write- Ahead Logging,它的关键点...

  • java面试题-2019-07-08

    1,java集合有哪些,区别有哪些2,spring事务级别有些3,mysql二阶段提交,三阶段提交是咋么理解的4,...

  • mysql

    浅谈mysql的两阶段提交协议https://www.cnblogs.com/hustcat/p/3577584....

  • 第二十一节、问题答疑

    1、在两阶段提交的不同瞬间,MySQL如果发生异常重启,是专门保证数据完整性的? 在两阶段提交的不同时刻,MySQ...

  • 【MySQL】15|日志和索引相关问题

    1 在两阶段提交的不同瞬间,MySQL如果发生异常重启,是怎么保证数据完整性的? 我们先来看下,两阶段提交的图 如...

  • MySQL两阶段提交串讲

    目录: 一、吹个牛 二、事务及它的特性 三、简单看下两阶段提交的流程 四、两阶段写日志用意? 五、加餐:sync_...

  • 分布式事务

    XA分布式事务协议 - 两阶段提交 & 三阶段提交 两阶段提交 两阶段提交存在的缺点 三阶段提交

网友评论

    本文标题:MySQL之二阶段提交

    本文链接:https://www.haomeiwen.com/subject/wziazltx.html