两次写和redo log

两次写特性能加强MySQL的可靠性。在脏页写入到表之前,先将一份副本写入硬盘,成功之后再写入表。

这样做的目的是预防脏页写入表时,发生最坏情况(例如:掉电),导致页损坏。也就是说至少部分数据无法读取。

两次写避免了这个问题。当最坏情况发生,服务重新启动时,系统检测页发生了损坏,那么会读取两次写的副本来恢复损坏的页。这样的系统更加可靠。

redo log是当脏页写入前,先写入到redo日志。当发生掉电时,缓存内的部分脏页会丢失,在系统恢复后,将从redo log中恢复缓存未写入磁盘的数据。

这看起来两者有点相似,再掉电后都有恢复数据的功能。不过两者的功能还是有较大区别。

两次写所存储的数据较小,它的重点是预防马上要写入的数据页,在故障中损坏后的恢复。也就是说重点是修复物理存储介质上损坏的数据页。

redo log重点是故障中,缓存脏页未能写入磁盘的数据,能通过redo log得以完整写入到磁盘。

两者相结合形成了一个完整的可靠的机制。

如果没有二次写,页损坏了,redo log中可能已经不包含这部分内容,数据就不完整了。

如果没有redo log,损坏的页虽然恢复正常,但是缓存脏页未能及时写入的数据则无法找回,数据也不完整。

两者相结合,完整的流程如下:

发生掉电故障后,系统重启恢复。如果检查页受损,那么调用两次写的副本恢复损坏的页。之后读入redo log将未写入的脏页写入到磁盘。

 

### 回答1: MySQL中的undologredolog是两种不同的日志文件。 undolog是用于事务回滚的日志文件,它记录了事务执行前的数据状态,当事务回滚时,可以根据这些记录将数据恢复到事务执行前的状态。 redolog是用于崩溃恢复和数据恢复的日志文件,它记录了MySQL数据库中所有的修改操作,当MySQL崩溃或者出现其他异常情况时,可以根据redolog中的记录将数据恢复到最近一次提交的状态。 ### 回答2: MySQL中的undologredolog是两个重要的日志文件,用于维护数据的一致性和恢复。 undolog(回滚日志)是用于回滚操作的日志,它记录了事务对数据库的修改操作,在回滚时可以利用undolog将数据恢复到事务开始前的状态。undolog文件是在InnoDB存储引擎中使用的,它采用了"write ahead logging"(先日志,再磁盘)的机制,保证事务的原子性和一致性。 redolog(重做日志)是用于恢复操作的日志,它记录了事务对数据库的修改操作,在数据库崩溃或意外断电等情况下,通过读取redolog可以将数据库恢复到最后一次提交事务的状态。redolog文件是在InnoDB存储引擎中使用的,默认情况下是循环入,即满了后会从头开始覆盖,以保证磁盘空间的有效利用。 undologredolog的作用不同,undolog主要用于事务回滚,redolog用于恢复数据库。在事务进行过程中,先将数据的修改操作入undolog,然后再redolog,只有当redolog入成功后,事务才会提交完成。这样可以保证在数据库崩溃后,借助redolog进行恢复操作,将未入磁盘的undolog日志进行恢复。 总结来说,undolog是用于回滚操作,保证了事务的原子性和一致性;redolog是用于恢复操作,保证了数据库的持久性。两者共同作用,保证了MySQL数据库的安全可靠性。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值