失效链接处理 |
GBase 8s checkpoint介绍 PDF 下载
本站整理下载:
相关截图:
主要内容:
1. 检查点(Checkpoint)概念
为提升事务性能, 8s内部使用BufferPool机制缓存事务涉及数据, 数据在缓存中被修改, 在 commit操作之前, 不写入磁盘. 8s使用逻辑日志与物理日志机制保证数据的正确性/完整性. 为达到及时从异常中恢复的目的, 8s需定期将缓存中数据写入磁盘. 如图-1所示.
8s定期将缓存数据写入磁盘的时间点称为检查点(Checkpoint). 如果数据库发生异常, 则从最近的一次检查点开始恢复即可.
执行Checkpoint时, 只需将缓存中被修改的数据写入磁盘, 而非缓存中全部数据. 即,如果某页被修改, 则只将此页(脏页)写入磁盘, 而非全部缓存中的页. 写入磁盘后, 脏页仍保留在缓存中, 其位置从LRU-M队列移至LRU-F队列, 从而去除脏页状态.
图-2展示了事务的流程(假设事务T1将t1表中, id列值为10的行删除)
图中页(page)为I/O最小单位, 如果某页中的数据被改动, 整页都需写入磁盘. 缓存中的页与磁盘中的页一一对应. 图中的5个操作解释如下:
1) 将删除操作的纪录从磁盘读入缓存, 读取该纪录所在页到缓存.
2) 将该页写入物理日志, 物理日志存储删除操作之前的数据页, 也称为"前镜像".
3) 将删除操作记入逻辑日志.
4) 修改缓存中对应的页, 将此页中被删除行所在槽位(slot)的长度设置为0, 以标识该行已被删除, 随后更新该页的时间戳.
5) 当执行Checkpoint(或其它写磁盘操作)时, 该页被写入磁盘, 同时将该页从LRU-M队列移至LRU-F队列.
|