一条SQL语句的执行过程

日志

  • undo log: 逻辑日志(相当于堕胎,撤回了没完全撤回)。用于事务的回滚,保证事务的 ACID 特性;MVCC(多版本并发控制)实现非锁定读。
  • redo log: 物理日志。
  • binlog: 二进制日志。

两阶段提交

两阶段提交是指在分布式事务中,为了保证所有节点的数据一致性,引入的一种协议。两阶段提交的过程分为两个阶段:

  • 第一阶段:准备阶段,协调者询问所有参与者是否可以提交事务,如果所有参与者都可以提交事务,则进入第二阶段,否则回滚事务。
  • 第二阶段:提交阶段,协调者通知所有参与者提交事务。

两阶段提交的缺点:阻塞时间长,单点问题。

三阶段提交

引入超时机制,解决了阻塞时间长的问题。三阶段提交的过程分为三个阶段:

  • 第一阶段:准备阶段,协调者询问所有参与者是否可以提交事务,如果所有参与者都可以提交事务,则进入第二阶段,否则回滚事务。
  • 第二阶段:提交阶段,协调者通知所有参与者提交事务。
  • 第三阶段:完成阶段,协调者通知所有参与者提交事务。

逻辑日志和物理日志

  • 逻辑日志:可以简单理解为记录的就是 sql 语句。
  • 物理日志:因为 MySQL 数据最终是保存在数据页中的,物理日志记录的就是数据页变更。

参考

从零开始使用 jupyter
单例模式
Valaxy v0.28.4 驱动|主题-Yunv0.28.5
本站总浏览量: -本站总访客数: -
本站已运行0 天0 小时0 分0 秒