第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。对这四种策略有下面四种解释。
-
内存中的数据最晚在commit的时候写入磁盘;
-
内存中的数据可以一直保留,在commit之后过一段时间再写入磁盘;
-
允许在事务commit之前把内存中的数据写入磁盘;
-
不允许在事务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型日志仅保留了新值,没有保留旧值。