
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
日志功能的应用在许多软件开发项目中都是非常常见的一个功能,而本文我们就简单来了解一下,RedoLog的原理与应用分析。
什么是RedoLog
顾名思义RedoLog的字面意思就是重做日志,指的是在数据库出现意外情况时能够对重新执行某种操作。在MySQL中,事务中修改的任何数据,都会将新的数据写入RedoLog中进行备份。
在MySQL中,随着事务操作的执行,就会产生RedoLog日志,在事务提交时会产生RedoLog并将其写入RedoBuffer,RedoBuffer也并不是随着事务的提交就会被立刻写入到磁盘中,而是等事务操作的脏页写入到磁盘之后,RedoLog的使命也就完成了,此时,RedoLog日志占用的空间可以重新利用,会被后续产生的RedoLog日志覆盖。
RedoLog的原理
RedoLog能够实现事务的持久性,防止在发生故障的时间点,有脏页未写入表的ibd文件中,在重启MySQL服务的时候,根据RedoLog进行重做,从而将未提交的事务进行持久化。
RedoLog的写机制
RedoLog文件的内容是以顺序循环的方式写入文件的,写满时就会回到一个文件,进行覆盖写。
WritePos是当前记录的位置,一边写一边后移,写到后一个文件末尾后就回到0号文件开头;
CheckPoint是当前要擦除的位置,也是往后推移并且循环的,擦除记录前要把记录更新到数据文件;
WritePos和CheckPoint之间还空着的部分,可以用来记录新的操作。如果WritePos追上CheckPoint,表示已经写满,此时就需要向后移动CheckPoint来擦除数据。
每个InnoDB存储引擎至少有1个重做日志文件组(group),每个文件组至少有2个重做日志文件,默认为ib_logfile0和ib_logfile1。
可以在MySQL中通过如下命令来查看控制RedoLog的参数。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。