数据库作业21:第十一章: 并发控制

(1)T1最后执行:2、T1->T2->T3:16、T1->T3->T2:8、T3->T1->T2(T2->T1->T3):4

(2)

T1 T2 T3
Slock A    
Y=A=0    
Unlock A    
Xlock A    
  Slock A  
A=Y+2 等待  
写回A 等待  
Unlock A 等待  
  Y=A=2  
  Unlock A  
  Xlock A  
    Slock A
  A=Y=2 等待
  写回 A 等待
  Unlock A 等待
    Y=A=4
    Unlock A
    Xlock A
    A=Y**2
    写回A
    Unlock A

(3)

T1 T2 T3
Slock A    
Y=A=0    
Unlock A    
  Slock A  
  Y=A=0  
Xlock A    
等待 Unlock A  
A=Y+2    
写回 A   Slock A
Unlock A   等待
    Y=A=2
    Unlock A
    Xlock A
  Xlock A  
  等待 Y=Y**2
  等待 写回A
  等待 Unlock A
  A=Y*2  
  写回A  
  Unlock A  

(4)

T1 T2 T3
Slock A    
Y=A=0    
Xlock A    
A=Y+2 Slock A  
写回 A 等待  
Unlock A 等待  
  Y=A=2  
  Xlock A  
Unlock A 等待 Slock A 
  A=Y*2 等待
  写回A 等待
  Unlock A 等待
    Y=A=4
  Unlock A  
    Xlock A
    A=Y**2
    写回A
    Unlock A
    Unlock A

(5)

T1 T2 T3
Slock A    
Y = A =0    
  Slock A  
  Y =A =0  
Xlock A    
等待    
  Xlock A  
  等待  
    Slock A
    Y = A =0
    Xlock A
    等待

如果调度中一对连续操作是冲突的,则意味着如果它们的执行顺序交换,则至少i改变其中一个事务的最终执行结果。
如果两个连续操作不冲突,则可以在调度中交换顺序。
一个调度S在保证冲突操作的次序不变的情况下,通过交换两个事务不冲突操作的次序得到另一个调度S’,如果S’是串行的,称调度S为冲突可串行化的调度。

本题中:r3(B)r1(A)w3(B)r2(B)r2(A)w2(B)r1(B)w1(A)
交换r1(A)和w3(B)得到:r3(B)w3(B)r1(A)r2(B)r2(A)w2(B)r1(B)w1(A)

再交换r1(A)和r2(B)r2(A)w2(B)r1(B),最终得到:r3(B)w3(B)r2(B)r2(A)w2(B)r1(B)r1(A)w1(A)
它的执行是T3->T2->T1,所以是冲突可串行调度。

(1)

T1 T2
Slock A  
R(A)  
Xlock B  
R(B)  
B=A+B  
W(B)  
Unlock B Slock B
Unlock A R(B)
  Xlock A
  R (A)
  A=A+B
  W(A)
  Unlock A
  Unlock B

(2)若不及时解锁的话,会引起死锁。

T1 T2
Slock A  
R(A)  
Slock(B)  
R(B)  
B=A+B  
  Slock B
  R(B)
  Slock A
  R(A)
  A=A+B
Xlock B  
等待 Xlock A
等待 等待
原创文章 25 获赞 20 访问量 9725

猜你喜欢

转载自blog.csdn.net/Freedomhy/article/details/106142323