系统故障的恢复 ( 1 ) 正向扫描日志文件,找出在故障发生前已经提交的事务,将其事务标识记入重做队列( REDO-LIST )。同时找出故障发生时尚未完成的事务,将其事务标识记入撤销队列。 ( 2 ) 对撤销对列中的各个事务进行撤销处理。进行撤销处理的方法是,反向扫描日志文件,对每个撤销事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库。 ( 3 ) 对重做队列中的各个事务进行重做处理。进行重做处理的方法是:正向扫描日志文件,对每个重做事务重新执行日志文件登记的操作,即将日志记录中“更新后”的值写入数据库。
我的理解是,事务对数据库的写操作一开始都是操作在内存,还没刷回磁盘里,然后发生了系统故障
然后恢复的时候,已提交的事务,修改都只是在内存里,所以现在丢失了,需要重做,而未提交的事务,可能是做了一部分修改,也是在内存里,我的疑问是,这里为什么要撤销呢?意思是这一部分在内存的修改也有可能会刷到磁盘里吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.