☃️【Mysql学习笔记】 日志篇
type
status
date
slug
summary
tags
category
icon
password
Blocked by
Blocking
AI summary
Undo Log(回滚日志)
- 作用:
- 实现事务的原子性,提供回滚操作
- 实现 MVCC(多版本并发控制),用于事务并发控制
- 工作原理:
- 当事务对数据做修改时,会先将数据的旧版本记录到 undo log
- 如果事务需要回滚,就可以利用 undo log 中的信息将数据恢复到修改前的状态
- 在 MVCC 中,当读取数据时,如果当前版本的数据被其他事务占用,可以通过 undo log 读取之前的历史版本
Redo Log(重做日志)
- 作用:
- 保证事务的持久性
- 提供崩溃恢复能力
- 工作原理:

- 当事务修改数据时,修改会先写入内存中的缓冲池(Buffer Pool)
- 同时,会将修改操作记录到 redo log
- 采用 WAL(Write-Ahead Logging)技术,即先写日志,再写磁盘
- 如果数据库崩溃,重启后可以通过 redo log 恢复尚未刷入磁盘的数据
- 特点:
- 循环写入,大小固定
- 顺序写入,性能好
- 具有 crash-safe 能力
Binlog(二进制日志)
- 作用:
- 主从复制
- 数据恢复
- 工作原理:
- 记录所有的 DDL 和 DML 语句
- 以事件形式记录,而不是记录数据页的更改
- 特点:
- 追加写入,不会覆盖以前的日志
- 可以用于时间点恢复
- 主从复制的基础
Redo Log 和 Binlog 的区别:
- 层次不同:
- redo log 是 InnoDB 引擎层的日志
- binlog 是 MySQL Server 层的日志
- 内容不同:
- redo log 记录的是数据页的物理修改
- binlog 记录的是逻辑日志,记录的是SQL语句的原始逻辑
- 写入方式:
- redo log 是循环写入,空间固定
- binlog 是追加写入,不会覆盖
- 用途不同:
- redo log 主要用于崩溃恢复
- binlog 主要用于主从复制和数据恢复
这三种日志各司其职,共同保证了 MySQL 的:
- 原子性(Atomicity):通过 undo log 实现
- 持久性(Durability):通过 redo log 实现
- 一致性(Consistency):通过 redo log 和 undo log 共同实现
- 隔离性(Isolation):通过 MVCC 和锁机制实现,其中 MVCC 用到了 undo log
这些日志机制是 MySQL 实现事务 ACID 特性和保证数据可靠性的重要基础。
Prev
【Mysql学习笔记】锁篇
Next
【Mysql学习笔记】事务篇
Loading...