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