DBMS基于日志的恢复

DBMS基于日志的恢复

DBMS基于日志的恢复 -

  • 日志是一系列记录。 每个事务的日志都保存在一些稳定的存储中,以便在发生任何故障时,可以从那里恢复。
  • 如果对数据库执行任何操作,则它将记录在日志中。
  • 但是,应该在数据库中应用实际事务之前完成存储日志的过程。

假设有一项事务,它执行修改学生所在的城市。 为此事务编写以下日志。

  • 启动事务时,它会写入“启动”日志。
    <Tn, Start>
    
  • 当事务城市从“Haikou”修改为“Shanghai”时,则会将另一个日志写入该文件。
    <Tn, City, 'Haikou', 'Shanghai' >
    
  • 当事务完成时,它会写入另一个日志以指示事务结束。
    <Tn, Commit>
    
    修改数据库有两种方法:

1. 延期数据库修改:

  • 如果事务在提交之前不修改数据库,则会发生延迟修改技术。
  • 在此方法中,将创建所有日志并将其存储在稳定存储中,并在事务提交时更新数据库。

2. 立即修改数据库:

  • 如果在事务仍处于活动状态时发生数据库修改,则会发生立即修改技术。
  • 在这种技术中,每次操作后都会立即修改数据库。 它遵循实际的数据库修改。

使用日志记录恢复

当系统崩溃时,系统会查询日志以查找需要撤消的事务以及需要重做的事务。

  • 如果日志包含记录<Ti,Start><Ti,Commit><Ti,Commit>,则需要重做事务Ti。
  • 如果日志包含记录<Tn,Start>但不包含<Ti,commit><Ti,abort>的记录,则需要撤消事务Ti。

目录

索引和B+树