第23讲-数据库事务处理技术之故障恢复

2300-第23讲本讲学习什么(1分43秒)及第23讲教学课件

2301-数据库故障类型(6分44秒)

(1)你要知道的

DBMS 的运行方式:

  • DBMS 利用内存(主存)和外存(辅存)这样的存储体系来进行数据库管理
  • 在内存中,又将其分为程序数据(事务数据)和系统数据

事务是DBMS对数据库进行控制的基本逻辑单元。

事务:宏观上是由程序员设置的一条或多条SQL语句的一次执行;微观上是对数据元素的一系列基本操作,如读写等。需要提交和撤销。

数据元素:

  • 通常 1 数据元素= 1 磁盘块/内存页
  • 也可以更小 (=1 记录)或更大 (=1 关系)

事务具有四个特性:ACID特性

  • 原子性 Atomicity
  • 一致性 Consistency
  • 隔离性 Isolation
  • 持久性 Durability

故障恢复涉及如何保证原子性和持久性

2302-数据库故障恢复的宏观思路(12分10秒)

(1)故障恢复与事务故障恢复

数据库故障恢复

把DB由当前不正确状态恢复到已知为正确的某一状态。

需要保证事务的:

√原子性:事务的所有操作,要么全都执行,要么全都不执行。

√持久性:已提交的事务对数据库产生的影响是持久的,未提交的事务对数据库不应有影响。

事务故障的恢复

事务故障可通过重做事务(Redo)和撤消事务(Undo)来恢复。重做事务可保证已提交事务的持久性,而撤销事务则消除未提交事务的影响

系统故障可通过运行日志来恢复

按照运行日志记录的事务操作顺序重做事务(当事务在发生故障时已正确结束)或撤消事务(当事务在发生故障时未结束)

但故障恢复是需要时间的

运行日志保留了若干天的记录,当发生系统故障时应从哪一个点开始恢复呢?

(3)介质故障恢复

副本(Copy)

  • 在某一时刻,对数据库在其他介质存储上产生的另一份等同记录
  • 用副本替换被损坏的数据库

介质故障的恢复

  • 用副本替换被破坏的数据库
  • 由于介质故障影响全面,在用副本恢复后还需要依据运行日志进行恢复

如何确定备份的时刻:转储点

  • 过频,影响系统工作效率;过疏,会造成运行日志过大,也影响系统运行性能
  • 备份转储周期与运行日志的大小密切相关,应注意防止衔接不畅而引起的漏洞

2303-运行日志的概念(13分57秒)

DBMS需要保证事务的:

√持久性:已提交的事务对数据库产生的影响是持久的,未提交的事务对数据库不应有影响。

√原子性:事务的所有操作,要么全都执行,要么全都不执行。

持久性:

已提交事务——缓冲区内容保证写回磁盘

未提交事务——缓冲区内容不能影响磁盘

2304-UNDO型日志及其故障恢复(9分59秒)

(4)检查点及其使用

静止检查点:周期性地对日志设置检查点

  • 停止接受新的事务, 等到所有当前活跃事务提交或终止,并在日志中写入了COMMIT或ABORT记录后
  • 将日志刷新到磁盘,写入日志记录<CKPT>,并再次刷新日志

非静止检查点

  • 在设置检查点时不必关闭系统,允许新事务进入
  • 写入一条 <START CKPT(T1,...,Tk) >,其中T1,...,Tk是所有活跃的未结束的事务
  • 继续正常的操作,直到T1,...,Tk都完成时,写入<ENDCKPT>

2305-REDO型日志及其故障恢复(7分54秒)

(4)检查点及其运用

非静止检查点

在进行检查点设置时不必关闭系统,允许新事务进入

写入一条<START CKPT(T1,...,Tk) >

其中T1,...,Tk是所有活跃的未结束的事务

将所有已提交的事务写回磁盘,继续正常的操作,直到T1,...,Tk都完成时,写入<ENDCKPT>

2306-UNDO/REDO结合型日志及其故障恢复(6分29秒)

第23讲模拟练习题

1、日志文件是用于记录对数据的所有更新操作。

解析:数据库的日志是记录对数据的所有更新操作,使于当数据库出现故障时能够顺利的恢复,保证事务的原子性和持久性。

2、下列说法正确的是检查点是DBMS强制使内存DB Buffer中的内容与介质DB中的内容保持一致的时刻点。

3、介质故障的恢复需要_________。

  • A.当前未执行完的事务撤销

  • B.当前执行完的事务需要按照运行日志记录的次序重做

  • C.用最新的备份文件替换发生故障的数据库文件

  • D.以上工作都需要,但需要注意操作的次序。

正确答案:D你错选为C

4、检查点是故障恢复技术中出现的概念。

5、DBMS管理数据库缓冲区有四种策略:No Steal, Steal, No Force, Force。对这四种策略有下面四种解释。

  1. 内存中的数据最晚在commit的时候写入磁盘;

  2. 内存中的数据可以一直保留,在commit之后过一段时间再写入磁盘;

  3. 允许在事务commit之前把内存中的数据写入磁盘;

  4. 不允许在事务commit之前把内存中的数据写入磁盘;

则策略与解释有正确对应的是Force:1; No Force:2; Steal:3; No Steal:4。

6、DBMS管理数据库缓冲区有四种策略:No Steal, Steal, No Force, Force。则效率较低但不会出现问题的策略组合是No Steal+ Force,而效率最高最常用但会出现问题的策略组合是Steal + No Force。

7、DBMS管理数据库缓冲区有四种策略:No Steal, Steal, No Force, Force。 为保证数据库系统故障能够有效地恢复,提出了三种类型的日志:Undo型日志、Redo型日志和Undo/Redo结合型日志。不同策略可以采用不同的日志予以恢复,则下列说法正确的是____________。

  • A.Steal + Force:不需要任何日志,不需要恢复

  • B.No Steal + Force:需要Undo/Redo结合型日志进行恢复,不需要Redo型日志

  • C.No Steal + No Force:需要Redo型日志进行恢复,不需要Undo型日志

  • D.Steal+ No Force:需要Undo型日志进行恢复, 不需要Redo型日志

正确答案:C你选对了

解析:本题需要理解这四种策略。Force+No Steal可以保证事务的持久性,不需恢复;

No Steal+No Force,会出现当发生系统故障时,已经提交事务却并未写入磁盘等问题,所以需要Redo型日志,以使重做事务保证持久性;

Steal+Force,会出现当发生系统故障时,未提交事务提早写入磁盘等问题,所以需要Undo型日志,以便撤销事务保证持久性;

而Steal+No Force,则在系统发生故障时,既会出现已经提交事务却并未写入磁盘等问题,也会出现未提交事务提早写入磁盘等问题,所以需要Undo/Redo结合型日志既执行已完成事务的重做,又执行未完成事务的撤销,才能保证持久性。

故此,选项C是正确的。

8、关于Undo型日志和Redo型日志的差别,下列说法正确的是Redo型日志是先将Commit记录写入日志,再将数据写回磁盘OUTPUT,而Undo型日志是先将数据写回磁盘OUTPUT,再将Commit记录写入日志。

9、关于用Undo型日志和Redo型日志进行数据库恢复,下列说法正确的是用Undo型日志恢复是从日志的尾部开始恢复,按日志记录的反序处理,直至遇到第一个检查点为止结束。

Redo型日志是先从日志尾部开始由后向前扫描直至遇到第一个检查点,然后自该检查点开始恢复,按日志记录正序处理,直至日志记录的尾部结束。

10、关于用Undo型日志进行数据库恢复,下列说法正确的是用Undo型日志恢复是对已完成的事务,跳过;而对未完成的事务,将日志记录的值写回磁盘。

Undo型日志仅保留了旧值,没有保留新值。

11、关于用Redo型日志进行数据库恢复,下列说法正确的是用Redo型日志恢复是对已完成的事务,将日志记录的值写回磁盘;而对未完成的事务,跳过。

Redo型日志仅保留了新值,没有保留旧值。