概述
前面提到,为了减少io操作,加载的数据页先会放到Buffer pool,等到刷盘时机,才会真实将页数据刷到磁盘进行持久化.假设修改好的脏页,在事务已经提交的情况下,突然断电,那么修改的脏页就丢失了,这样没办法保证事务的持久性.这个时候redo日志就派上用场了.
redo日志原理
1.当执行一条写语句时候,首先会加载到Buffer pool的缓存页中,然后修改页中数据,加入到
flush链表中,我们知道如果这个时候断电,数据其实在只是内存中改了,会导致数据丢失,
这个修改后的脏页再也无法恢复出来了。
2.加入到flush链表中,其实马上会写入到一个叫redo日志文件中,当然不是直接,直接就太慢了,
其实是先写到一个叫做log buffer中,每次都会写入一个mtr(不可分割的日志组)