本文主要是介绍【云原生进阶之数据库技术】第一章MySQL-架构原理-3.2.4 UndoLog工作原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1 基本概念
- undo log(回滚日志) :是 Innodb 存储引擎层生成的日志,实现了事务中的原子性,主要用于事务回滚和 MVCC。
- redo log(重做日志) :是 Innodb 存储引擎层生成的日志,实现了事务中的持久性,主要用于掉电等故障恢复;
- binlog (归档日志) :是 Server 层生成的日志,主要用于数据备份和主从复制;
先来看一张sql执行逻辑图,这样对三种log的使用有更直观的认知:
最后写入binLog文件,redo事务状态变更为commit
2 Undo Log
2.1 为什么需要 undo log?
我们在执行执行一条“增删改”语句的时候,虽然没有输入 begin 开启事务和 commit 提交事务,但是 MySQL会隐式开启事务来执行“增删改”语句的,且执行完就会自动提交事务的,这样就保证了执行完“增删改”语句后,我们可以及时在数据库表看到“增删改”的结果了。执行一条语句是否自动提交事务,是由 autocommit
这篇关于【云原生进阶之数据库技术】第一章MySQL-架构原理-3.2.4 UndoLog工作原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!