在“数据库系统概念 - 第 16 章 恢复系统 - 16.6 非易失性存储器数据丢失的故障”中,有这么一段话:
数据库转储的一种方法要求在转储过程中不能有事务处于活跃状态,并且必须执行一个类似于检查点的过程:
1. 将当前位于主存的所有日志记录输出到稳定存储器中。
2. 将所有缓冲块输出到磁盘中。
3. 将数据库的内容拷贝到稳定存储器中。
4. 将日志记录<dump>输出到稳定存储器中。
第 1 、2 和 4 步对应于 16.3.6 节中检查点的那三个步骤。
为从非易失性存储器数据丢失中恢复,系统利用最近一次转储将数据库复原到磁盘中。然后,根据日志,重做最近一次转储后所做的所有动作。注意,这里不必执行任何 undo 操作。
在写入最后一条日志记录时,可能存在仍处于活跃状态的事务,如果不执行 undo 的话,数据库的状态就不是一致的,也无法保证事务的原子性。那么为什么不必执行任何 undo 操作呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.