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

时间:2024-03-18 21:54:31

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

 

作业原地址:作业

 

目录

9.

(1)

(2)

(3)

(4)

(5)

10.

14.

(1)

(2)

 

总结

 


 

9.

设T1、T2、T3是如下的三个事务,设A的初值为0。

T1:A:=A+2;

T2:A:=A*2;

T3:A:=A**2; (即 A←A²)

 

(1)

若这三个事务允许并发执行,则有多少种可能的正确结果?请一一列举出来。

①T1  T2  T3  —— 16

②T1  T3  T2  —— 8

③T2  T1  T3  —— 4

④T3  T1  T2  —— 4

⑤T2  T3  T1  —— 2

⑥T3  T2  T1  —— 2

共有4种。

 

(2)

请给出一个可串行化的调度,并给出执行结果。

T1 T2 T3
Slock A    
Y = R(A)    
Unlock A    
Xlock A    
  Slock A  
A = Y+2 等待  
W(A) 等待  
Unlock A 等待  
  Y = R(A)  
  Unlock A  
  Xlock A  
    Slock A
  A = Y+2 等待
  W(A) 等待
  Unlock A 等待
    Y = R(A)
    Unlock A
    Xlock A
    A = Y**2
    W(A)
    Unlock A

 

结果,A = 16。

 

(3)

请给出一个非串行化的调度,并给出执行结果。

 

T1 T2 T3
Slock A    
Y = R(A) = 0    
    Slock A
    等待
    Y = R(A) = 0
    Unlock A
Xlock A    
A = Y+2    
  Slock A  
W(A) 等待  
Unlock A 等待  
  Y = R(A) = 2  
  Unlock A  
  Xlock A  
  A = Y*2  
    Xlock A
  W(A) 等待
  Unlock A 等待
    A = Y**2
    W(A)
    Unlock A

 

结果,A = 0。

 

(4)

若这三个事务都遵守两段锁协议,请给出一个不产生死锁的可串行化调度。

 

T1 T2 T3
Slock A    
Y = R(A) = 0    
Xlock A    

A = Y+2

   
  Slock A  
W(A) = 2 等待  
Unlock A 等待  
  Y = R(A) = 2  
  Xlock A  
    Slock A
  A = Y*2 等待
  W(A) = 4 等待
  Unlock A 等待
    Y = R(A) = 4
    XLock A
    A = Y**2
    W(A) =  16
    Unlock A

 

(5)

若这三个事务都遵守两段锁协议,请给出一个产生死锁的调度。

 

T1 T2 T3
Slock A    
Y = R(A) = 0    
  Slock A  
  Y = R(A) = 0  
Xlock A    
等待    
等待 Xlock A  
等待 等待  
等待 等待 Slock A
等待 等待 Y = R(A) = 0
等待 等待 Xlock A
等待 等待 等待

 


10.

今有三个事务的一个调度r3(B)r1(A)w3(B)r2(B)r2(A)w2(B)r1(B)w1(A),该调度是冲突可串行化的调度吗?为什么?

 

  交换后:r3(B)w3(B)r2(B)w2(B)r1(B)r2(A)r1(A)w1(A),

  调度:T3——T2——T1

  所以是冲突可串行化调度。

 


14.

考虑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 T2
Slock A Slock B
R(A) R(B)
Slock B Slock A
R(B) R(A)
B = A+B A = A+B
Xlock B Xlock A
W(B) W(A)
Unlock A Unlock B
Unlock B Unlock A

 

(2)

说明T1和T2的执行是否会引起死锁,给出T1和T2的一个调度并说明之。

T1 T2
Slock A  
R(A)  
Slock B  
R(B)  
B = A+B  
  Slock B
  R(B)
  Slock A
  R(A)
  A = A+B
  R(A)
Xlock B  
等待 Xlock A
等待 等待

 


 

总结

 

  最后一次理论课作业。

 


完成时间:58min

          以上

                                         ————(2020.5.17)