前景提要
在“数据库系统概念 - 第 16 章 恢复系统 - 16.6 非易失性存储器数据丢失的故障”中,有这么一段话: 数据库转储的一种方法要求在转储过程中不能有事务处于活跃状态,并且必须执行一个类似于检查点的过程: 1. 将当前位于主存的所有日志记录输出到稳定存储器中。 2. 将所有缓冲块输出到磁盘中。 3. 将数据库的内容拷贝到稳定存储器中。 4. 将日志记录<dump>输出到稳定存储器中。 第 1 、2 和 4 步对应于 16.3.6 节中检查点的那三个步骤。 为从非易失性存储器数据丢失中恢复,系统利用最近一次转储将数据库复原到磁盘中。然后,根据日志,重做最近一次转储后所做的所有动作。注意,这里不必执行任何 undo 操作。
在写入最后一条日志记录时,可能存在仍处于活跃状态的事务,如果不执行 undo 的话,数据库的状态就不是一致的,也无法保证事务的原子性。那么为什么不必执行任何 undo 操作呢?