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