REDO LOG

本文介绍了在IT领域内进行内容转载时所需遵循的基本规范与要求,强调了尊重原创的重要性,并提供了正确的转载方式及注意事项。
Redo log buffer 是 InnoDB 存储引擎用于临时存储重做日志记录的内存区域,其大小由 `innodb_log_buffer_size` 配置调整 [^3]。 Redo log 始于 mini - transaction (mtr),止于磁盘文件。一个事务在修改数据页时会开启一个 mtr,对数据页的修改会以 Redo Record 的形式暂存在该 mtr 中;当提交 mtr 时,会把其中的 Redo Record 复制到 Log Buffer 中形成 Redo Loglog writer 线程负责把 Log Buffer 中的 Redo Log 写入操作系统内核的 Page Cache;log flusher 线程负责把 Page Cache 中的 Redo Log 写入磁盘文件 (Redo File) [^2]。 当事务开始并执行修改操作时,InnoDB 生成相应的重做日志记录,并把它们放入 Redo Log Buffer 中。根据 `innodb_flush_log_at_trx_commit` 的设置,在事务提交时,Log Buffer 中的重做日志可能会被刷新到磁盘上的重做日志文件。若设置为 1,则每次提交都刷新;若为 0 或 2,则按照各自的规则进行。在日志刷新之前,如果 Redo Log Buffer 满了或者达到了一定的条件(如超过一定时间),InnoDB 也会将 Redo Log Buffer 中的内容刷新到磁盘中。此外,InnoDB 还会定期执行“检查点”操作,在这个过程中,把部分重做日志应用到数据文件,并清理已经不再需要的重做日志信息 [^3]。 需要注意的是,设置 redo log buffer 的大小并不是一种一劳永逸的操作。合理的 redo log buffer 大小取决于数据库的工作负载和资源限制。在实际应用中,需要根据具体情况进行调整和优化 [^1]。 ```python # 模拟事务修改数据,将 redo log 记录到 redo log buffer 的简单伪代码 def transaction_modify_data(): # 开始事务 start_transaction() # 模拟修改数据 modify_data() # 生成 redo log 记录 redo_log_record = generate_redo_log() # 将 redo log 记录放入 redo log buffer redo_log_buffer.append(redo_log_record) # 提交事务 commit_transaction() ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值