1.考虑下图所示的日志记录:
序号 | 日志 |
---|---|
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重做,T4回滚
(2)如果系统故障发生在10之后,说明哪些事务需要重做,哪些事务需要回滚。
T1重做,T3回滚
(3)如果系统故障发生在9之后,说明哪些事务需要重做,哪些事务需要回滚。
T1重做,T2、T3回滚
(4)如果系统故障发生在7之后,说明哪些事务需要重做,哪些事务需要回滚。
T1重做,T2回滚
5.考虑题4所示的日志记录,假认开始时、B、C的值都是0:
(1)如果系统故障发生在14之后,写出系统恢复后4、B、C的值;
A=8,B=7,C=11
(2)如果系统故障发生在12之后,写出系统恢复后A、B、C的值;
A=10,B=0,C=11
(3)如果系统故障发生在10之后,写出系统恢复后A、B、C的值:
A=10,B=0,C=11
(4)如果系统故障发生在9之后,写出系统恢复后A、B、C的值;
A=10,B=0,C=11
(5)如果系统故障发生在7之后,写出系统恢复后A、B、C的值;
A=10,B=0,C=11
(6)如果系统故障发生在5之后,写出系统恢复后4、B、C的值。
A=0,B=0,C=0
总结:40分钟(+打字),感觉并不难,比上次作业还要轻松