更新日期:2024年09月11日
GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 310 -
数据库服务器会定期将缓冲池内的事务和数据清空到磁盘。直到将事务和数据清空到磁盘
之前,数据和事务都处于流出的状态。除了在事务完成后立即强制将每个事务清空到磁
盘,数据库服务器还将事务写入到逻辑日志中。数据库服务器在事务发生时记录事务。
如果出现系统故障,那么服务器执行以下操作:
•
重放日志以重做和复原事务。
•
将数据库返回至与发生故障时数据库系统的状态一致的状态。
为了便于数据库系统的复原或逻辑恢复,数据库服务器生成一致性点,称为检查点。检查
点是建立数据库系统的已知和一致状态时日志中的时间点。通常,检查点涉及到记录特定
数量的信息,因此,如果发生故障,数据库服务器可在已建立的点上重新启动。
检查点的目的在于定期将逻辑日志中的重新启动点向前移动。如果检查点不存在而且发生
故障,那么数据库服务器需要处理自系统重新启动以来逻辑日志中记录的所有事务。
检查点可在以下某个情境中出现:
•
当指定事件发生时。例如,每当将数据库空间添加到服务器或执行数据库备份
时,检查点将出现。
通常,这些类型的事件会触发阻塞事务处理的检查点。因此,这些检查点称为阻
塞检查点。
•
当资源限制发生时。例如,逻辑日志空间的每个范围需要检查点来保证日志具有
开始快速恢复的检查点。数据库服务器将在物理日志达到总大小的 75% 时触发检
查点,以避免物理日志溢出。
资源限制触发的检查点通常不会阻塞事务。因此,这些检查点称为非阻塞检查
点。
但是,如果在检查点处理期间数据库服务器将要耗尽资源,那么在检查点处理的
中段将出现事务阻塞,以保证耗尽资源之前检查点能够完成。如果事务被阻塞,
那么服务器将更频繁的尝试触发检查点,以避免检查点处理期间的事务阻塞。有
关更多信息,请参阅用于估计物理日志的大小的策略。
自动检查点引起数据库服务器触发更频繁的检查点,以避免事务阻塞。自动检查点尝试监
视系统活动和资源使用情况(物理和逻辑日志使用情况以及缓冲池脏的程度)以能够及时
地触发检查点,这样检查点的处理就可在物理日志或逻辑日志耗尽之前完成。
数据库服务器为逻辑日志空间的每个范围生成至少一个自动检查点。这保证了可开始快速
恢复的检查点的存在。
使用 AUTO_CKPTS 配置参数可在数据库服务器启动时启用或禁用自动检查点。(可通过使
用 onmode -wm 或 onmode -wf 来动态地启用或禁用自动检查点。)
手动检查点是您可以启动的基于事件的检查点。
数据库服务器提供了两种方法来确定发生意外中断时快速恢复所用时间。
•
使用 CKPTINTVL 配置参数可指定服务器触发检查点的频率。
GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 311 -
•
使用 RTO_SERVER_RESTART 配置参数可指定快速恢复需要的时间。
当您使用 RTO_SERVER_RESTART 配置参数时:
ₒ
数据库服务器忽略 CKPTINTVL 配置参数。
ₒ
数据库服务器监视物理和逻辑日志使用情况,以估计快速恢复的持续时间。
如果服务器估计快速恢复将超出 RTO_SERVER_RESTART 配置参数中指定的时
间,那么服务器将自动触发检查点。
RTO_SERVER_RESTART 配置参数可以是目标时间量,不能是保证的时间量。
可增加重新启动时间的多个因素也可影响快速恢复时间。这些因素包括回滚遇到意外中断
时处于活动状态的长事务。
有关 RTO_SERVER_RESTART 和 AUTO_CKPTS 配置参数的更多信息,请参阅《GBase 8s 管
理员参考》中有关配置参数的主题。
用于清空检查点之间缓冲池的 LRU 值
用于清空检查点之间缓冲池的 LRU 值对于检查点性能不是特别重要。在 BUFFERPOOL 配
置参数中设置的 lru_max_dirty 和 lru_min_dirty 值通常仅对于维护页替换的足够
清洁页是必需的。通过将 lru_min_dirty 设置为 70 和将 lru_max_dirty 设置
为 80 开始。
如果检查点期间事务被阻塞,那么数据库服务器随后将尝试增加检查点频率以消除被阻塞
的事务。当服务器搜索空闲页以执行页替换并且发生前台写入时,服务器随后将自动增加
LRU 清空频率以防止该事件再次发生。当数据库服务器完成页替换并找到后续访问的页
时,服务器将自动增加 LRU 清空。对 LRU 清空所作的任何自动调整都不会持续
到 onconfig 文件。
备份期间的检查点
如果执行备份,那么数据库服务器将运行检查点并将所有经更改的页清空到磁盘中。如果
您执行复原,那么数据库服务器重新应用所有逻辑日志记录。
有关 ON-Bar 或 ontape 的信息,请参阅《GBase 8s 备份与复原指南》。