如图文字所说
在崩溃恢复的时候,checkpoint_lsn后可能存在一些已经被mtr对应的页面数据刷盘的情况,但是出现这种情况的原因,我觉得有些牵强,因为在上文提到
在将脏页刷盘之后就做checkpoint了,那图一中说的原因指的是在把脏页刷盘后,做checkpoint的时候数据库崩溃了?
以下这种情况我是觉得比较合理的
等到页b被刷盘后,他对应的mtr_2的全部修改和部分mtr_3对应的数据页修改已经落盘,页面b的pageheader 中的fil_page_lsn变为10000,checkpoint_lsn变为页d的oldest_modification也就是9948。在崩溃恢复的时候发现checkpoint_lsn比页面中的page header中的fil_page_lsn小,说明此页面不需要再做checkpoint_lsn处的redo log了