<pre name="code" class="sql"><pre name="code" class="html">14.2.3 InnoDB Redo Log 14.2.3.1 Group Commit for Redo Log Flushing redo log 是一个基于磁盘的数据结构 用于crash recovery到正确的数据(被不完全的事务写入的) 在正常操作期间,redo log 可以让查询改变InnoDB表的数据, 由SQL语句或者行级别的API 调用产生。 修改没有完成更新数据文件前一个意外的关机被自动重现 在初始化期间,在接收连接前。 默认的,redo log 是物理的表现在磁盘上的一组文件, 叫做b_logfile0 and ib_logfile1. MySQL 写redo log 文件以一个循环的方法。 redo log里的数据是编码成根据改变的行; 这些数据是被收集称为redo. redo log 的磁盘布局使用下面的选项配置: 1.innodb_log_file_size: 定义每个redo log 文件的大小 单位字节,默认redo log 文件是48MB。 log 文件的组合大小是(innodb_log_file_size * innodb_log_files_in_group) 不能超过最大值 512G mysql> show variables like '%innodb_log%'; +-----------------------------+-----------+ | Variable_name | Value | +-----------------------------+-----------+ | innodb_log_buffer_size | 8388608 | | innodb_log_compressed_pages | ON | | innodb_log_file_size | 536870912 | | innodb_log_files_in_group | 2 当前数据库redo 文件大小为512M innodb_log_files_in_group: log group 里的log files 的数目,默认是创建2个文件叫做ib_logfile0 and ib_logfile1. innodb_log_group_home_dir: InnoDB log files的目录path.如果你不指定一个指, log 文件会被创建在MySQL 数据目录(datdir) 改变你的初始redo log 配置 14.2.3.1 Group Commit for Redo Log Flushing InnoDB, 像任何其他遵循ACID数据库引擎, flushes 事务的redo log 在它提交前, InnoDB 使用group 提交功能 多个flush 请求在一起 以组为单位来避免每个提交都flush. 使用group 提交,InnoDB 执行一个单独写 log file 执行提交动作 队伍多个用户事务提交在同一时间, 大大改善性能。