《数据库系统概论》第十一章习题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十一章习题
9.设T1,T2,T3是的三个事务:
T1:A:=A+2;
T2:A:=A*2;
T3:A:=A**2;(A←A2)
设A的初值为0;
(1)若这三个事务允许并发执行,则有多少种可能的正确结果,请一一列举出来;
(2)请给出一个可串行化的调度,并给出执行结果;
(3)请给出一个非串行化的调度,并给出执行结果;
(4)若这三个事务都遵守两段锁协议,请给出一个不产生死锁的可串行化调度;
(5)若这三个事务都遵守两段锁协议,请给出一个产生死锁的调度。
解:(1)4种A=16,8,4,2
T1―T2―T3 A=16
T1―T3―T2 A=8
T2―T1―T3 或T3―T1―T2 A=4
T2―T3―T1 或T3―T2―T1 A=2
(2)一个可串行化的调度及执行结果如下图所示:
执行结果为A=16,是可串行化的调度。
(3)一个非串行化调度及执行结果如下图所示:
运行结果A=0
,为非串行化调度。
(4)若三个串行事务都遵守两段锁协议,下图是按T3-T1-T2顺序运行的一个不产生死锁的可串行化调度;
个不产生死锁的可串行化的调度。
(5
上例中,T1申请对X1加写锁,由于T2对X1加了读锁,所以不成功,处于等待状态;T2申请对A加写锁,由于T1对A加了读锁,所以不成功,处于等待状态;T3申请对A加读锁,由于T1对A加了读锁,所以不成功,处于等待状态。因此,三个事务都处于等待状态,产生死锁。