MySQL中有七种日志文件,分别是:
-
重做日志(redo log)
-
回滚日志(undo log)
-
二进制日志(binlog)
-
错误日志(errorlog)
-
慢查询日志(slow query log)
-
一般查询日志(general log)
-
中继日志(relay log)
其中重做日志和回滚日志与事务操作息息相关,二进制日志也与事务操作有一定的关系,这三种日志,对理解 MySQL 中的事务操作有着重要的意义。这里简单总结一下这三个具有一定相关性的日志。
-
重做日志(redo log)
- 作用:
重做日志(redo log)的作用是确保事务的持久性,防止在发生故障的时间点,尚有脏页未写入磁盘。在重启 MySQL 服务的时候,根据 redo log 进行重做,从而达到事务的持久性这一特性。
- 内容:
物理格式的日志,记录的是物理数据页面修改的信息,其 redo log 是顺序写入 redo log file 的物理文件中去的。
- 什么时候产生:
事务开始之后就产生 redo log,redo log 的落盘并不是随着事务的提交才写入的,而是在事务的执行过程中,便开始写入 redo log 文件中。
- 什么时候释放:
当对应事务的脏页写入到磁盘之后,redo log 的使命也就完成了,重做日志占用的空间就可以重用(被覆盖)。
- 对应的物理文件:
默认情况下,对应的物理文件位于数据库的 data 目录下的 ib_logfile