InnoDB之Redo Log(重做日志)

440 阅读2分钟

InnoDB之Redo Log(重做日志)

重做日志是基于磁盘的数据结构,在崩溃恢复期间用于纠正不完整事务写入的数据。在正常操作期间,重做日志对更改表数据的请求进行编码,这些请求是由SQL语句或低级API调用引起的。在初始化期间以及接受连接之前,会自动重播未完成意外关闭之前未完成更新数据文件的修改。有关重做日志在崩溃恢复中的作用的信息,请参见 “ InnoDB恢复”

默认情况下,重做日志在磁盘上由名为ib_logfile0和 的两个文件物理表示ib_logfile1。MySQL以循环方式写入重做日志文件。重做日志中的数据根据受影响的记录进行编码;此数据统称为重做。通过重做日志的数据传递以不断增加的LSN值表示。

有关相关信息,请参阅 重做日志文件配置“优化InnoDB重做日志”

更改InnoDB重做日志文件的数量或大小

要更改InnoDB 重做日志文件的数量或大小,请 执行以下步骤:

  1. 停止MySQL服务器,并确保它关闭且没有错误。
  2. 编辑my.cnf以更改日志文件配置。要更改日志文件的大小,请配置 innodb_log_file_size。要增加日志文件的数量,请配置 innodb_log_files_in_group
  3. 再次启动MySQL服务器。

如果InnoDB检测到 innodb_log_file_size与重做日志文件大小不同,它将写入日志检查点,关闭并删除旧的日志文件,以请求的大小创建新的日志文件,然后打开新的日志文件。

组提交以重做日志刷新

InnoDB像任何其他 符合ACID的数据库引擎一样,在提交事务之前刷新事务的重做日志InnoDB 使用组提交 功能将多个此类刷新请求分组在一起,以避免每次提交都进行一次刷新。使用组提交, InnoDB可以对日志文件进行一次写入操作,以对大约同时提交的多个用户事务执行提交操作,从而显着提高了吞吐量。

有关性能COMMIT和其他事务操作的更多信息 ,请参见“优化InnoDB事务管理”

更多内容欢迎关注我的个人公众号“韩哥有话说”,100G人工智能学习资料,大量后端学习资料等你来拿。

qrcode_for_gh_3214f9e3470a_258.jpg