数据库第十章习题作业

目录

  • 4.考虑下图所示的日志记录:
    • (1)如果系统故障发生在14之后,说明哪些事务需要重做,哪些事务需要回滚。
    • (2)如果系统故障发生在10之后,说明哪些事务需要重做,哪些事务需要回滚。
    • (3)如果系统故障发生在9之后,说明哪些事务需要重做,哪些事务需要回滚。
    • (4)如果系统故障发生在7之后,说明哪些事务需要重做,哪些事务需要回滚。
  • 5.考虑题4所示的日志记录
    • (1)如果系统故障发生在14之后,写出系统恢复后A、B、C的值;
    • (2)如果系统故障发生在12之后,写出系统恢复后A、B、C的值;
    • (3)如果系统故障发生在10之后,写出系统恢复后A、B、C的值;
    • (4)如果系统故障发生在9之后,写出系统恢复后A、B、C的值;
    • (5)如果系统故障发生在7之后,写出系统恢复后A、B、C的值;
    • (6)如果系统故障发生在5之后,写出系统恢复后A、B、C的值。
  • 总结:

数据库第十章习题作业_第1张图片

4.考虑下图所示的日志记录:

序号 日志
1 T1:开始
2 T1:写A,A=10
3 T2:开始
4 T2:写B,B=9
5 T1:写C,C=11
6 T1:提交
7 T2:写C,C=13
8 T3:开始
9 T3:写A,A=8
10 T2:回滚
11 T3:写B,B=7
12 T4:开始
13 T3:提交
14 T4:写C,C=12

(1)如果系统故障发生在14之后,说明哪些事务需要重做,哪些事务需要回滚。

由于T1和T3已经提交,需要重做,T2已经回滚,T4开始但是没结束。

重做:T1、T3
回滚:T4

(2)如果系统故障发生在10之后,说明哪些事务需要重做,哪些事务需要回滚。

由于T1已提交,T2已回滚,T3已经开始但是没有结束,T4还没有开始
重做:T1
回滚:T3

(3)如果系统故障发生在9之后,说明哪些事务需要重做,哪些事务需要回滚。

由于T1已经提交,T2和T3还未结束,此时T4还没有开始
重做:T1
回滚:T2、T3

(4)如果系统故障发生在7之后,说明哪些事务需要重做,哪些事务需要回滚。

由于T1已经提交,T2未结束,T3、T4未开始
重做:T1
回滚:T2

注:系统重新启动后,恢复子系统,需要重做已经提交的事务,撤销没完成的事务

5.考虑题4所示的日志记录

假设开始时A,B,C的值都是0:

(1)如果系统故障发生在14之后,写出系统恢复后A、B、C的值;

重做:T1、T3
回滚:T4

A=8,B=7,C=11

(2)如果系统故障发生在12之后,写出系统恢复后A、B、C的值;

重做:T1
回滚:T3、T4

A=10,B=0,C=11

(3)如果系统故障发生在10之后,写出系统恢复后A、B、C的值;

重做:T1
回滚:T3

A=10,B=0,C=11

(4)如果系统故障发生在9之后,写出系统恢复后A、B、C的值;

重做:T1
回滚:T2、T3

A=10,B=0,C=11

(5)如果系统故障发生在7之后,写出系统恢复后A、B、C的值;

重做:T1
回滚:T2

A=10,B=0,C=11

(6)如果系统故障发生在5之后,写出系统恢复后A、B、C的值。

重做:无
回滚:T1、T2

A=0,B=0,C=0

注:恢复:在故障发生前,已提交的事务记入重做,未完成的事务记入撤销队列

总结:

1.回滚=撤销
2.系统重新启动,恢复子系统,关于事务:
重做:已经提交的事务,撤销:未完成的事务
3.恢复:故障发生前
重做:已提交事务,撤销:未完成事务

完。

你可能感兴趣的:(数据库)