并发控制是指可以同时执行多个事务,然后出现交错的日志。但是交易结果可能会发生变化,因此请保持这些交易的执行顺序。
在恢复过程中,恢复系统很难回溯所有日志然后开始恢复。
可以通过以下四种方式使用并发事务进行恢复。
- 与并发控制的交互
- 事务回滚
- 检查点
- 重启恢复
与并发控制的交互:
在这个方案中,恢复方案很大程度上取决于所使用的并发控制方案。因此,要回滚失败的事务,我们必须撤消事务执行的更新。
事务回滚:
- 在这个方案中,我们使用日志回滚失败的事务。
- 系统向后扫描日志失败的事务,对于在日志中找到的每个日志记录,系统恢复数据项。
检查点:
- 检查点是保存应用程序状态快照的过程,以便在出现故障时可以从该点重新启动。
- 检查点是将记录从缓冲区写入数据库的时间点。
- Checkpoint 缩短了恢复过程。
- 当它到达检查点时,事务将被更新到数据库中,直到那时,整个日志文件将从文件中删除。然后用新的事务步骤更新日志文件,直到下一个检查点,依此类推。
- 检查点用于声明 DBMS 处于一致状态之前的点,并且所有事务都已提交。
为了缓解这种情况,大多数 DBMS 使用“检查点”概念。
- 在这个方案中,我们使用检查点来减少系统从崩溃中恢复时必须扫描的日志记录数量。
- 在并发事务处理系统中,我们要求检查点日志记录的格式为
,其中“L”是检查点时活动的事务列表。 - 模糊检查点是一个检查点,即使在写出缓冲区块时也允许事务执行更新。
重启恢复:
- 当系统从崩溃中恢复时,它会构建两个列表。
- undo-list 由要撤销的事务组成,redo-list 由要重做的事务组成。
- 系统构造这两个列表如下: 最初,它们都是空的。系统向后扫描日志,检查每条记录,直到找到第一个
记录。