数据库_封锁及封锁协议作业

设T1,T2是两个事务如下:

T1: A : = A + 2 , B = B × 2 A:=A+2,B=B\times2 A:=A+2B=B×2;
T2: A : = A × 2 , B = B + 2 A:=A\times2,B=B+2 A:=A×2B=B+2;

设A,B的初值都为0

(1)若这两个事务容许并发执行,则有多少种可能的正确结果?请一一例举出来;
有两种可能:
T1   T2 —— A = 4 , B = 2 A=4,B=2 A=4,B=2
T2   T1 —— A = 2 , B = 4 A=2,B=4 A=2,B=4

(2)请给出一个可串行化的调度,并给出执行结果;

T1T2
SlockA
Y=Read(A)=0
Unlock A
Xlock A
A=Y+2
Write(A)
Unlock A
SlockB
Z=Read(B)=0
Unlock B
Xlock B
B=Z*2
Write(B)
Unlock B
 SlockA
 Y=Read(A)=0
 Unlock A
 Xlock A
 A=Y*2
 Write(A)
 Unlock A
 SlockB
 Z=Read(B)=0
 Unlock B
 Xlock B
 B=Z+2
 Write(B)
 Unlock B
结果: A = 4 , B = 2 A=4,B=2 A=4,B=2

(3)请给出一个非串行化的调度,并给出执行结果;

T1T2
SlockA
Y=Read(A)=0
Unlock A
Xlock A
 SlockA
A=Y+2等待
Write(A)等待
Unlock A等待
 Y=Read(A)=0
 Unlock A
 Xlock A
SlockB
等待A=Y*2
等待Write(A)
等待Unlock A
Z=Read(B)=0
Unlock B
Xlock B
 SlockB
B=Z*2等待
Write(B)等待
Unlock B等待
 Z=Read(B)=0
 Unlock B
 Xlock B
 B=Z+2
 Write(B)
 Unlock B
结果: A = 0 , B = 2 A=0,B=2 A=0,B=2

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

T1T2
SlockA
Y=Read(A)=0
Xlock A
A=Y+2
Write(A)
SlockB
Z=Read(B)=0
Xlock B
B=Z*2
Write(B)
Unlock A
Unlock A
Unlock B
Unlock B
 SlockA
 Y=Read(A)=0
 Xlock A
 A=Y*2
 Write(A)
 SlockB
 Z=Read(B)=0
 Xlock B
 B=Z+2
 Write(B)
 Unlock A
 Unlock A
 Unlock B
 Unlock B

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

T1T2
SlockA
 SlockA
Xlock A
等待
等待Xlock A
等待等待
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值