MySQL的redolog日志

重做日志,记录的是事务提交时数据页的物理修改,是用来实现事务的持久性

该日志文件由两部分组成:重做日志缓冲(redo log buffer)以及重做日志文件(redo log file),前者是在内存中,后者在磁盘中。

简单说:保证脏页刷新回磁盘出现问题时,进行数据恢复,保证持久性。

整个过程:InnoDB的内存有缓冲池,增删改时修改缓冲池的数据,没有的话,先从磁盘加载存到缓冲区再修改。修改后的数据页叫做脏页,脏页会在一定时间刷新到磁盘,保证数据一致。如果这时出错,数据没有持久化,所以需要redolog。当进行增删改后,回先记录到redo log buffer中记录数据页变化,事务提交的时候会把bufffer中的变化刷新到磁盘中持久保存,这时如果出错可以通过redolog进行数据恢复。

而如果脏页成功刷新到磁盘 或者涉及到的数据已经落盘,此时redolog就没有作用了,就可以删除了,所以存在的两个redolog文件是循环写的。

那为什么每一次提交事务,要刷新redo log 到磁盘中呢,而不是直接将buffer pool中的脏页刷新到磁盘呢 ?

因为在业务操作中,我们操作数据一般都是随机读写磁盘的,而不是顺序读写磁盘。 而redo log在往磁盘文件中写入数据,由于是日志文件,所以都是顺序写的。顺序写的效率,要远大于随机写。 这种先写日志的方式,称之为 WAL(Write-Ahead Logging)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值