【云原生进阶之数据库技术】第一章MySQL-架构原理-3.2.5 Redo Log工作原理

MySQL的InnoDB存储引擎使用redo log保证事务的持久性,即使数据库异常重启也能恢复数据。redo log包括内存的redo log buffer和磁盘上的redo log文件,以循环写的方式工作。内容包括记录数据页的修改,确保即使Buffer Pool中的脏页丢失,仍能通过redo log恢复。事务提交时,redo log先持久化,脏页随后按一定策略刷盘。redo log的写入通过追加操作,提高写入性能。在磁盘空间满时,会覆盖最旧的记录。通过对redo log的理解,可以优化MySQL的性能和数据安全性。
摘要由CSDN通过智能技术生成

1 Redo Log综述

1.1 sql执行逻辑

  • undo log(回滚日志) :是 Innodb 存储引擎层生成的日志,实现了事务中的原子性,主要用于事务回滚和 MVCC。
  • redo log(重做日志) :是 Innodb 存储引擎层生成的日志,实现了事务中的持久性,主要用于掉电等故障恢复;
  • binlog (归档日志) :是 Server 层生成的日志,主要用于数据备份和主从复制;

        先来看一张sql执行逻辑图,这样对三种log的使用有更直观的认知:

        最后写入binLog文件,redo事务状态变更为commit

1.2 为什么需要 Buffer Pool?

        MySQL 的数据都是存在磁盘中的,那么我们要更新一条记录的时候,得先要从磁盘读取该记录,然后在内存中修改这条记录。那修改完这条记录是选择直接写回到磁盘,还是选择缓存起来呢?

        当然是缓存起来好,这样下次有查询语句命中了这条记录,直接读取缓存中的

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江中散人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值