《数据库系统概论》第十一章习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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加了读锁,所以不成功,处于等待状态。因此,三个事务都处于等待状态,产生死锁。

相关文档
最新文档