芝麻\n 2023-08-22 14:54 采纳率: 0%
浏览 11

MySQL崩溃恢复时跳过已刷盘页面

img

如图文字所说
在崩溃恢复的时候,checkpoint_lsn后可能存在一些已经被mtr对应的页面数据刷盘的情况,但是出现这种情况的原因,我觉得有些牵强,因为在上文提到

img

在将脏页刷盘之后就做checkpoint了,那图一中说的原因指的是在把脏页刷盘后,做checkpoint的时候数据库崩溃了?

以下这种情况我是觉得比较合理的

img

等到页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了

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-08-29 22:07
    关注

    引用 皆我百晓生 小程序回复内容作答:
    在MySQL崩溃恢复过程中,通常会根据checkpoint_lsn来判断哪些页面需要进行恢复操作。如果发现某个页面的checkpoint_lsn小于页面中的fil_page_lsn(该页面的最老修改LSN),说明此页面不需要再进行恢复操作,因为它的数据已经被持久化到磁盘中。

    这种情况可能出现在以下场景中:在将脏页刷盘之后马上做checkpoint时,数据库崩溃了。在这种情况下,已经刷盘的页面的checkpoint_lsn会小于页面中的fil_page_lsn,因为崩溃之前没有来得及更新checkpoint_lsn。

    这种情况下,恢复过程会跳过这些已经刷盘的页面,不需要再进行重做操作。因为这些页面的数据已经被成功持久化到磁盘中,不会造成数据丢失。

    需要注意的是,这个机制只会在崩溃恢复过程中起作用,对于正常运行的数据库,checkpoint_lsn会及时更新,保证数据的一致性和持久化。

    评论

报告相同问题?

问题事件

  • 修改了问题 8月22日
  • 创建了问题 8月22日

悬赏问题

  • ¥15 (标签-考研|关键词-set)
  • ¥15 求修改代码,图书管理系统
  • ¥15 请问有没求偏多标签数据集yeast,reference,recreation,scene,health数据集。
  • ¥15 传感网应用开发单片机实训
  • ¥15 Delphi 关于sAlphaImageList使用问题
  • ¥15 寻找将CAJ格式文档转txt文本的方案
  • ¥15 shein测试开发会问些啥我是写java的
  • ¥15 关于#单片机#的问题:我有个课程项目设计,我想在STM32F103veTX单片机,M3主控模块上设计一个程序,在Keil uVision5(C语言)上代码该怎么编译?(嫌钱少我可以加钱,急急急)
  • ¥15 opnet仿真网络协议遇到问题
  • ¥15 在安装python的机器学习程序包scikit-learn(1.1版本)时遇到如下问题