【数据库】作业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)

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

T1T2T3
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)

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

 

T1T2T3
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)

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

 

T1T2T3
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)

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

 

T1T2T3
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,增加加锁操作和解锁操作, 并要求遵循两阶段封锁协议。

 

T1T2
Slock ASlock B
R(A)R(B)
Slock BSlock A
R(B)R(A)
B = A+BA = A+B
Xlock BXlock A
W(B)W(A)
Unlock AUnlock B
Unlock BUnlock A

 

(2)

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

T1T2
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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值