Chap10 习题解答
1. 试述事务的概念及事务的4个特性。恢复技术能保证事务的哪些特性?
- 事务:所谓事务就是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。
- 事务的四个特性(ACID):
- 原子性(Atomicity):事务中的操作要么全做,要么全不做
- 一致性(Consistency):事务的执行结果必须是使数据库从一个一致性状态到另一个一致性状态。
- 隔离性(Isolation):一个事务的执行不能被其他事务干扰。
- 持续性(Durability):一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。
- 恢复技术能保证事务的原子性、一致性和持续性。
2. 为什么事务非正常结束时会影响数据库数据的正确性?请举例说明。
+例如:在银行转账中,A转账一万元给B,现有一个事务包括两个操作,一个是将A中的存款减去一万元,另一个是将B中的存款加上一万元。现在数据库系统中执行完将A中的存款减去一万元后,事务非正常结束,则会造成存款数据的不正确性。
3.登记日志文件时为什么必须先写日志文件,后写数据库?
- 如果先修改数据库,由于出现故障,没有登记这个修改,则以后就无法恢复这个修改了。如果先写了日志,如果出现故障,没有修改数据库,按日志文件 恢复时只不过是多执行一次不必要的UNDO操作,并不影响数据库的正确性。
4-5. 详见N
6. 针对不同的故障,试给出恢复的策略和方法。
- 事务故障的恢复:事务故障是指事务在运行至正常终点前被终止,恢复子系统利用日志文件撤销(UNDO)此事务已对数据库进行的修改。具体步骤:反向扫描日志文件,查找该事务的更新操作,然后执行逆操作,如此往复,直至到事务的开始标记。
- 系统故障的恢复:系统故障包括两个,一是已提交事务对数据库的更新可能还留在缓冲区没来得及写入数据库;二是未完成事务对数据库的更新可能已写入数据库。恢复操作就是要撤销故障发生时未完成的事务,重做已完成的事务。具体步骤:正向扫描日志文件,找出在故障发生前已经提交的事务加入REDO-LIST,同时找出故障发生时未完成的事务加入UNDO-LIST。对撤销事务进行反向逆操作,对重做事务进行正向重新执行。
- 介质故障的恢复:介质故障时磁盘上的物理数据和日志文件被破坏。恢复方法是重装数据库,然后重做已完成的事务。具体步骤:装入最新的数据库备份,使数据库恢复到 最近一次转储的一致性状态,然后装入转储结束时刻后的日志文件副本,通过正向重做文件中已提交 的事务,恢复数据库。
7. 什么是检查点记录?检查点记录包括哪些内容?
- 检查点记录:在日志文件中增加的一类新记录。
- 检查点记录的内容:
- 建立检查点时刻所有正在执行的事务清单。
- 这些事务最近一个日志记录的地址。
8. 具有检查点的恢复技术有什么优点?试举一个具体例子加以说明。
- 优点:可以改善恢复效率。
- 举例:当事务T在一个检查点之前提交,T对数据库的修改一定都已写入数据库。这样恢复处理时,没有必要对事务T执行重做操作。
9. 试述使用检查点方法进行恢复的步骤。
- (1)从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录。
- (2)由该检查点记录得到检查点建立时刻所有正在执行的事务清单。
- (3)从检查点开始,正向扫描日志文件,如有新的事务便加入UNDO-LIST,若发现已提交事务,就将其从UNDO-LIST中移到REDO-LIST中。
- (4)对UNDO-LIST中的事务执行UNDO操作,对REDO-LIST中的事务执行REDO操作。
10. 什么是数据库镜像?它有什么用途?
- 数据库镜像:即根据DBA的要求,自动把整个数据库或者其中的部分关键数据复制到另一个磁盘上。每当主数据库更新时,DBMS自动把更新后的数据复制过去,即DBMS自动保证镜像数据与主数据的一致性。
- 用途:
- 一是用于数据库恢复:一旦出现故障,可由镜像数据继续提供使用,同时DBMS利用镜像数据进行数据库的恢复,不需要关闭系统和重装数据库副本。
- 二是提高数据库的可用性:在没有出现故障时,当一个用户在对某个数据对象加了排他锁时,其他用户可以读镜像数据库中的数据,而不必等待。