发布时间:2023-09-17 11:00
系统故障是指造成系统停止运转的任何事件,使得系统重新启动。发生系统故障时,一些未完成的事务的结果可能已经送入物理数据库,从而造成数据库处于不正确的状态,为了保证数据一致性,需要清除这些事务对数据库的所有修改。
恢复子系统必须在系统重新启动的时候让所有非正常终止的事务回滚,强行撤销所有未完成的事务。
另一方面,发生系统故障时,有些已完成的事务可能一部分甚至全部在缓冲区,尚未写回磁盘上的物理数据库,系统故障使得这些事务对数据库的修改部分或全部丢失,这也会使数据库处于不一致状态,因此应将这些事务已提交的结果重新写入数据库。所以恢复子系统还需要重做所有已提交的事务。
(1)正向扫描日志文件,找出在故障发生前已经提交的事务(这些事务既有begin-transaction记录,也有commit记录),将其事务标识计入重做队列。同时找出故障发生时尚未完成的事务(这些事务只有transaction记录,无相应的commit记录),将其事务标识计入撤销队列
(2)对撤销队列中的各个事务进行撤销处理。(反向扫描,对每个撤销事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库)
(3)对重做队列中的各个事务进行重做处理(正向扫描)
【node拓展】web开发模式 | express应用程序生成器
C#中DataSet、DataTable、DataRow数据的复制方法
横空出世!SpringBoot应用自动化部署神器,IDEA版Jenkins?
python与数据挖掘 上机实验_python数据挖掘实验报告1
《MySQL数据库》之"浅尝辄止"(五)DQL的使用详解和存储引擎简介
PyTorch】常见错误: RuntimeError:one of the variables needed for gradient computation has been modified
Python pandas DataFrame基础运算及空值填充详解
springboot 正确的在异步线程中使用request的示例代码