某数据库采用模糊检查点(fuzzy checkpoint)。创建检查点期间,事务仍可继续更新数据页。下列说法正确的是()。
模糊检查点的“模糊”,说的正是检查点不是某个把全库瞬间冻结的静止画面。检查点推进时,事务可以继续运行,脏页集合也可能变化。因此系统要把活跃事务、脏页或相应日志位置等恢复所需信息记录下来。检查点能缩小恢复起点和工作量,却不会把后续日志变得多余。
选项分析
错误。那更接近强制获得静止一致点的做法,不符合模糊检查点允许并发推进的特征。
正确。检查点与事务并发时,必须记录恢复阶段需要的状态信息。
错误。检查点之后发生且尚未落盘的更新,崩溃后仍可能依赖日志重做。
错误。恢复时必须知道哪些事务在检查点附近仍处于活跃状态。
本题为什么容易错
同学常把“检查点”理解成拍照:按下快门,所有东西都得停住。数据库更关心的是业务不能因为一次检查点长时间停摆,因此会用日志和状态表把这个不完全静止的边界描述清楚。
简短答案
数据库做模糊检查点时,必须暂停所有事务吗,正确答案是 B(检查点可与事务并发进行,需要记录足够的活跃事务和脏页等恢复信息)。模糊检查点的“模糊”,说的正是检查点不是某个把全库瞬间冻结的静止画面。检查点推进时,事务可以继续运行,脏页集合也可能变化。因此系统要把活跃事务、脏页或相应日志位置等恢复所需信息记录下来。检查点能缩小恢复起点和工作量,却不会把后续日志变得多余。
易混淆概念对比表
| 概念 | 本题判断 | 区别要点 | 记忆提示 |
|---|---|---|---|
| 检查点开始后必须阻塞全部事务,直到所有数据页写盘 | 本题干扰项 | 错误。那更接近强制获得静止一致点的做法,不符合模糊检查点允许并发推进的特征。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
| 检查点可与事务并发进行,需要记录足够的活跃事务和脏页等恢复信息 | 本题正确答案 | 正确。检查点与事务并发时,必须记录恢复阶段需要的状态信息。 | 看到题干核心场景时优先联想到它 |
| 有了检查点,崩溃恢复就不再需要读取日志 | 本题干扰项 | 错误。检查点之后发生且尚未落盘的更新,崩溃后仍可能依赖日志重做。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
| 检查点只记录已经提交的事务,不关心尚未完成的事务 | 本题干扰项 | 错误。恢复时必须知道哪些事务在检查点附近仍处于活跃状态。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
本题易混淆选项怎么区分
- 检查点开始后必须阻塞全部事务,直到所有数据页写盘:错误。那更接近强制获得静止一致点的做法,不符合模糊检查点允许并发推进的特征。
- 有了检查点,崩溃恢复就不再需要读取日志:错误。检查点之后发生且尚未落盘的更新,崩溃后仍可能依赖日志重做。
- 检查点只记录已经提交的事务,不关心尚未完成的事务:错误。恢复时必须知道哪些事务在检查点附近仍处于活跃状态。
知识点详解
检查点把恢复过程的搜索起点向前推进。实现细节因数据库而异,但共同思路是保存足够的恢复元数据,并配合预写日志确保先有日志、后写数据页。检查点更频繁通常能减少崩溃后的重做范围,却也会增加运行时写盘压力。
备考速记
模糊不是记录含糊,而是检查点期间业务仍在动。
日志在日志场景中的作用
线上系统设置检查点间隔时,不能只追求恢复快。间隔过短可能造成持续I/O压力,过长又会让恢复扫描更多日志。应结合写入量、恢复时间目标和存储性能观察。
同类题怎么考
- 判断模糊检查点是否需要暂停全部事务。
- 比较检查点频率、运行时I/O与崩溃恢复时间之间的权衡。
日志在数据库系统工程师软考中的考法
遇到“必须暂停所有事务”“完全不需要日志”这类绝对表述先警惕。模糊检查点的核心价值就是允许并发,并用更完整的恢复信息换取较小停顿。
解题思路
题干已经说事务仍可更新,这就排除了A。既然数据还在变化,系统不能只记已提交事务,也不能丢掉日志;它必须保存足以描述恢复起点的状态,所以选B。
考点定位
判断检查点题,先区分“取得恢复边界”和“把全部数据立刻写成完全一致快照”。模糊检查点追求的是减少长时间停顿,而不是取消日志恢复。
易错提醒
- 把检查点等同于完整数据库备份。
- 认为检查点之后的日志可以立即全部删除。
- 只背缩短恢复时间,却说不出需要保留哪些恢复线索。
备考提示
- 画一条时间线:检查点开始、事务继续更新、检查点结束、系统崩溃。
- 把活跃事务、脏页和日志位置分别写在时间线旁,理解它们为什么都影响恢复。
你可能还想了解
- 模糊检查点需要暂停所有事务吗?
- 数据库检查点后为什么还要日志?
- 模糊检查点记录哪些信息?
本文小结
模糊检查点允许事务继续执行,并通过活跃事务、脏页及日志位置等信息保留恢复边界;它缩短恢复范围,但不取代日志。