Loading... # Ch10. 数据库恢复技术 ## 10.1 事务的概念和4个特性 ### 10.1.1 事物 事物是用户定义的一个数据库操作序列,这些操作要么全做、要么全不做,是不可分割的工作单位 ### 10.1.2 四个特性 *(ACID特性)* - 原子性 *(Atomicity)* - 一致性 *(Consistency)* - 隔离性 *(Isolation)* - 持续性 *(Durability)* ### 10.1.3 恢复技术能保证事物的哪些特性 **原子性** 和 **持续性** ## 10.2 为什么事务的非正常结束会影响数据库数据的正确性 事务执行的结果必须是数据库从一个一致性状态到另一个一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所作的修改一部分已经写入物理数据库,此时数据库除不正确(不一致)状态 ## 10.3 登记日志文件时为什么必须先写日志文件,后写数据库 将数据修改写入数据库和修改的日志记录写到日志是两个不同的操作。 如果先写数据库蟹盖,而在运行记录中没有登记这个修改,则以后无法恢复这个修改;如果险些日志而没有修改数据库,恢复时不过多义词`UNDO`操作,并不会影响数据库正确性。 ## 10.4 针对不同的故障,给出恢复的策略和方法 ### 10.4.1 事务故障 1. 反向扫描日志文件,查找该事务的更新操作 2. 对该事务的更新操作执行逆操作。(将日志记录中“更新前的值”写入到数据库) 直至读到此事务的开始标记,恢复就完成了 ### 10.4.2 系统故障 1. 正向扫描日志文件,找出故障发生前已经提交的事务队列(REDO-LIST)和未完成事务队列(UNDO-LIST) 2. 对未完成的事务队列中的各个事务进行`UNDO`处理 3. 对已经提交的事务队列中的各个事务进行`REDO`处理 ### 10.4.3 介质故障 1. 装入最新的数据库后备副本,是数据库恢复到最近一次转储一致性状态 2. 装入转储结束时刻的日志文件副本 3. 启动系统恢复命令,由DBMS完成恢复功能。 ## 10.5 什么是检查点记录,检查点记录包括哪些内容 检查点记录是一类新的日志记录,包括 1. 建立检查点时刻所有正在执行的事务清单 2. 这些事务的最近一个日志记录的地址 ## 10.6 检查点的恢复技术有哪些优点 利用日志技术进行数据库恢复时,回复子系统必须搜索整个日志,这会耗费大量的时间。此外REDO处理事务实际上已经将更新操作写道数据库,回复子系统又重新执行了这些操作,浪费了大量时间。 使用检查点技术前,恢复时需要从头扫描日志文件,而利用检查点技术只需要从检查点开始扫描日志,缩短可扫描日志的时间。 除此之外某些事务已经写到数据库中,恢复时没必要进行REDO处理 ## 10.7 简述使用检查点方法进行回复的步骤 1. 在重新开始文件中,找到最后一个检查点记录在日志文件的地址,又改地址在日志文件中找到最后一个检查点记录 2. 由检查点记录得到检查点建立时刻所有正在执行的事务清单`ACTIVE-LIST`,建立2个事务队列 - `UNDO-LIST`:需要执行`undo`操纵的事务集合. 先将`ACTIVE-LIST`暂时放入`UNDO-LIST` - `REDO-LIST`:需要执行`redo`操纵的事务集合. 先将`REDO-LIST`置空 3. 从检查点开始正向扫描日志文件 - 有新开始的事务$T_iT_i$,将$T_iT_i$暂时放入`UNDO-LIST` - 有提交的事务$T_jT_j$,将$T_jT_j$从`UNDO-LIST`移到`REDO-LIST`,直到日志文件结束 4. 对`UNDO-LIST`进行`undo`操作,多`REDO-LIST`进行`redo`操作 最后修改:2020 年 11 月 01 日 © 允许规范转载 赞 0 如果觉得我的文章对你有用,请随意赞赏