1.设T1、T2、T3是如下的三个事务,设A的初值为0.
T1:A:=A+2;
T2:A:=A*2;
T3:A:=A2; (即 A←A²)**
(1)若这三个事务允许并发执行,则有多少种可能的正确结果?请一一列举出来。
三个事务一共有2x3种排序(有点排列组合那味)
T1 T2 T3 结果为16
T1 T3 T2 结果为8
T2 T1 T3 结果为4
T2 T3 T1 结果为2
T3 T1 T2 结果为4
T3 T2 T1 结果为2
所以一共有4种可能的正确结果 16 8 4 2
(2)请给出一个可串行化的调度,并给出执行结果。
(3)请给出一个非串行化的调度,并给出执行结果。
(4)若这三个事务都遵守两段锁协议,请给出一个不产生死锁的可串行化调度。
(5)若这三个事务都遵守两段锁协议,请给出一个产生死锁的调度。
3.考虑T1和T2两个事务。
T1: R(A); R(B);B=A+B; W(B) T2:R(B); R(A);A=A+B; W(A)
(1)改写T1和T2,增加加锁操作和解锁操作, 并要求遵循两阶段封锁协议。
T1: Slock A; R(A); Slock B; R(B); B=A+B; Xlock B;W(B); Unlock A; Unlock B;
T2: Slock B; R(B); Slock A; R(A); A=A+B; Xlock A;W(A); Unlock B; Unlock A
(2)说明T1和T2的执行是否会引起死锁,给出T1和T2的一个调度并说明之。
哦 !数据库剧终了 下面全面进攻复习和数据库大实验!