Mysql日志总结

Undo log

概念:undo log 是一种用于撤销回退的日志。在事务没提交之前,MySQL 会先记录更新前的数据到 undo log 日志文件里面,当事务回滚时,可以利用 undo log 来进行回滚。

版本链:当前记录 + undo log

在这里插入图片描述

作用:

  • 实现事务回滚。

  • 通过隐藏列的roll_pointer字段,去检测当前记录的哪个版本能够在此次快照读中查询到。(拿着每个记录的trx_id和ReadView的信息进行对比)

Redo log

概念:Buffer Pool 是基于内存的,因为一些原因,脏页中的数据还没来得及落盘,会破坏事务的持久性。可以通过redo log将对哪些页做的修改记录下来,故障恢复后可以根据此日志将数据恢复到最新状态,保证事务的持久性。

Buffer Pool的脏页刷盘时机:

  • 后台线程

  • 当脏页所占用内存达到一定值时候(可设置)

  • redo log写满,需要checkpoint操作

  • MySQL 正常关闭时

redo log刷盘时机:

  • InnoDB的后台线程,每隔1s,会将内存中的redo log刷盘

  • MySQL 正常关闭时

作用:记录buffer pool中的脏页修改记录,并用于恢复,保证事务的持久性

Binlog

概念:binlog 文件是记录了所有数据库表结构变更和表数据修改的日志,不会记录查询类的操作。

binlog的格式:

  • STATEMENT:只记录执行的sql语句
  • ROW:会记录每一行数据的变化。(不是sql语句,是每行记录右之前变为现在什么样子)
  • Mixed:对于可能会出现不一致的操作语句,会采用Row格式,对于一般语句采用STATEMENT

binlog刷盘时机:

  • 事务执行时候会写入binlog cache,事务提交后,binlog会刷盘

作用:

  • 对数据进行备份,可用于恢复
  • 主从复制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值