2.5.2 重做日志

存储系统如果采用REDO日志,其写操作流程如下:

1)将REDO日志以追加写的方式写入磁盘的日志文件。

2)将REDO日志的修改操作应用到内存中。

3)返回操作成功或者失败。

REDO日志的约束规则为:在修改内存中的元素X之前,要确保与这一修改相关的操作日志必须先刷入到磁盘中。顾名思义,用REDO日志进行故障恢复,只需要从头到尾读取日志文件中的修改操作,并将它们逐个应用到内存中,即重做一遍。

为什么需要先写操作日志再修改内存中的数据呢?假如先修改内存中的数据,那么用户就能立刻读到修改后的结果,一旦在完成内存修改与写入日志之间发生故障,那么最近的修改操作无法恢复。然而,之前的用户可能已经读取了修改后的结果,这就会产生不一致的情况。