MySQL中的日志

10 篇文章 0 订阅

查询日志,binlog,redo log, undo log介绍。

目录

日志

MySQL中的4种日志

错误日志

查询日志和慢查询日志

二进制日志(binlog)

InnoDB 存储引擎的日志

重做日志(redo log)

回滚日志(undo log)


日志

MySQL中的4种日志

MySQL中常见的几种日志 - 知乎

在 MySQL 中,有 4 种不同的日志,分别是错误日志、二进制日志

(BINLOG 日志)、查询日志和慢查询日志,这些日志记录着数据库在不同方面的踪迹

错误日志

错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程中发生任何

严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,可以首先查看此日志。

查询日志和慢查询日志

查询日志中记录了客户端的所有操作语句,而二进制日志不包含查询数据的SQL语句。

慢查询日志记录了所有执行时间超过参数 long_query_time 设置值并且扫描记录数不小于

min_examined_row_limit 的所有的SQL语句的日志。long_query_time 默认为 10 秒,最小为 0, 精度可以到微

秒。

二进制日志(binlog)

二进制日志(BINLOG)记录了所有的 DDL(data define language数据定义语言)语句和 DML(data manage language数据操纵语言 insert 等)语句,但是不包括数据查询语句。此日志对于灾难时的数据恢复起着极其重要的作用,MySQL的主从复制, 就是通过该binlog实现的。

InnoDB 存储引擎的日志

undo log 和 redo log 其实都不是 MySQL 数据库层面的日志,而是 InnoDB 存储引擎的日志。二者的作用联系紧密,事务的隔离性由锁来实现,原子性、一致性、持久性通过数据库的 redo log 或 undo log 来完成。

redo log 又称为重做日志,用来保证事务的持久性,undo log 用来保证事务的原子性和 MVCC。

重做日志(redo log)

详细分析MySQL事务日志(redo log和undo log) - 骏马金龙 - 博客园

redo 记录的是物理上 值的修改 不像 binlog 是记录的是逻辑语句

和大多数关系型数据库一样,InnoDB 记录了对数据文件的物理更改,并保证总是日志先行,也就是所谓的 WAL,即在持久化数据文件前,保证之前的 redo 日志已经写到磁盘。由于 redo log 是顺序整块写入,所以性能要更好。

重做日志两部分组成:一是内存中的重做日志缓冲(redo log buffer),是易失的;二是重做日志文件(redo log file),是持久的。redo log 记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来。

在一条语句进行执行的时候,InnoDB 引擎会把新记录写到 redo log 日志中,然后更新内存,更新完成后就算是语句执行完了,然后在空闲的时候或者是按照设定的更新策略将 redo log 中的内容更新到磁盘中。

实现持久性,避免事务提交之后每次都要刷新到磁盘

回滚日志(undo log)

undo log 有两个作用:提供回滚和多版本并发控制下的读(MVCC),也即非锁定读

在数据修改的时候,不仅记录了redo,还记录了相对应的 undo,如果因为某些原因导致事务失败或回滚了,可以借助该 undo 进行回滚。

undo log 和 redo log 记录物理日志不一样,它是逻辑日志。可以认为当 delete 一条记录时,undo log 中会记录一条对应的 insert 记录,反之亦然,当 update 一条记录时,它记录一条对应相反的 update 记录。

有时候应用到行版本控制的时候,也是通过 undo log 来实现的:当读取的某一行被其他事务锁定时,它可以从 undo log 中分析出该行记录以前的数据是什么,从而提供该行版本信息,让用户实现非锁定一致性读取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值