5.6 checkpoint的原理

使用checkpoint的目的
一、是将内存里面发生修改的数据写到数据文件进行持久化保存,确保数据一致性
二、是实现数据库在某个时刻意外发生故障,再次启动时,缩短数据库的恢复时间
checkpoint本质
Checkpoint相当于一个日志,记录了上次Checkpoint后相关数据文件的变化
checkpoint包含的关键信息
先看图

5.6-1

5.6-1

每一个checkpoint包含1个root、3个列表及磁盘文件大小
详细信息解释:
(1)root page:包含root page 的大小(size)、在文件中的位置(offset)、校验和(checksum),当创建一checkpoint时,会生成一个新 root page。
(2)allocated list page:用于记录最后一次 checkpoint之后,在这次 checkpoint执行时,由WiredTiger块管理器新分配的page记录每个新分配page的size、offset和checksum
(3)available list page:在执行这次 checkpoint时,所有由WiredTiger 块管理器分配的page还没有被使用;当删除一个之前创建的checkpoint时,它所附带的可用 page 将被合并到最新的checkpoint的可用列表上,也会记录每个可用page的size、offset 和checksum.
(4)discarded list page:用于记录最后一次 checkpoint之后,在这次 checkpoint 执行时,丢弃不再使用的page,并会记录每个丢弃page的size、offset和checksume
(5)fle size:在这次 checkpoint执行后,用于记录磁盘中数据文件的大小。
checkpoint原理图

5.6-2

5.6-2