暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8s 数据库的检查点机制

原创 ting 2022-05-25
926
  1. 概念
    数据库周期性地将 buffer pool 的脏数据刷新到磁盘上,达到磁盘、内存数据一致性的 时间点被称为检查点(Checkpoint),当数据库从异常故障中恢复时就可以从最新的一次 checkpoint 点开始恢复。
  2. 功能
    Checkpoint 发生时,只需要将内存中修改的数据(脏数据)同步到磁盘,而不需要将所有的信息写回到磁盘,即如果只有一个 page 是脏数据,那么只需要将该 page 同步到磁盘即可,其他 page 不需要同步。同时,写回磁盘的数据仍然在内存中,只是将内存中与磁盘不一致的脏数据同步到磁盘中。
  3. 事务过程解析
    在这里插入图片描述

具体过程解析:
(1)需要将 delete 操作的记录从磁盘读取到 buffer pool 中,读取该记录所在的 Page到内存,内存中一个内存页存储对应的数据页。
(2)将该数据页写入物理日志文件中,物理日志有一个对应的数据页存储 delete 操作之前的前影数据页。
(3)将delete 操作的逻辑信息写入逻辑日志文件中。
(4)修改 buffer pool 中的内存页,将数据页中该行记录的槽位标记中的长度设置为 0,标识记录被删除,同时更新数据页时间戳信息。
(5)当发生 Checkpoint(或者其他磁盘写操作)时,将该数据页从内存同步到磁盘,写磁盘需要将整个 Page 更新到磁盘。同时将内存数据页从 LRU 的 M 队列移动到F队列。

  1. 检查点过程
    在这里插入图片描述

当系统触发非阻塞检查点操作时,首先阻塞事务的处理,记录系统恢复信息,清仓逻辑日志缓冲区中的内容,记录检查点信息;之后,系统中的事务操作不再被阻塞,恢复继续运行,系统将内存中所有被修改的数据清仓到磁盘上;最后,将检查点的信息记载到系统保留页中,这样就完成了一个非阻塞检查点操作。
在对 bufferpool 进行 flush 时,事务不会被阻塞。在执行检查点过程中,事务处理继续 执行,物理日志和逻辑日志继续被使用。非阻塞检查点有一小部分需要在阻塞状态下等待 用户离开 critical section,并进行对系统恢复等元数据信息的刷新。
5. 查看检查点命令
onstat -g ckp 命令:打印 checkpoint 历史记录和配置建议

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论