您好,欢迎来到爱够旅游网。
搜索
您的当前位置:首页《数据库系统概论》第十一章习题

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

来源:爱够旅游网


第十一章习题

9.设T1,T2,T3是的三个事务: T1:A:=A+2; T2:A:=A*2;

2

T3:A:=A**2;(A←A) 设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)一个可串行化的调度及执行结果如下图所示:

时T1 T2 T3 间 t1 Slock A t2 X=A=0 t3 Unlock A t4 Xlock A t5 Slock A t6 A=X+2 等待 t7 写回A(=等待 t8 2) 等待 t9 Unlock A 获得Slock t1A 0 X=A=2 t1Unlock A 1 Xlock A Slock A t1 等待 2 A=X*2 等待 t1写回A(=等待 3 4) 获得Slock A t1Unlock A X=A=4 4 Unlock A t1Xlock A 25 A=X t1写回A(=16) 6 Unlock A t17 t18 t19 t20

t21 t22 t23

执行结果为A=16,是可串行化的调度。

(3)一个非串行化调度及执行结果如下图所示:

时T1 T2 间 t1 Slock A t2 X=A=0 t3 Unlock A t4 Slock A t5 X=A=0 t6 Xlock A t7 等待 Unlock A t8 获得Xlock t9 A t1A=X+2 0 写回A(= t12) 1 Unlock A t1 2 t1Xlock A 3 等待 t1等待 4 等待 t1获得Xock A 5 A=X*2 t1写回A(=6 0) t1Unlock A 7

T3 Slock A 等待 获得Slock A X=A=4 Unlock A Xlock A 2A=X 写回A(=4) Unlock A

t18 t19 t20 t21 t22 t23

运行结果A=0,为非串行化调度。

(4)若三个串行事务都遵守两段锁协议,下图是按T3-T1-T2顺序运行的一个不产生死锁的可串行化调度;

时T1 T2 T3 间 t1 Slock A t2 X=A=0 t3 Xlock A 2t4 Slock A A=X t5 等待 写回A(=0) t6 等待 Unlock A t7 X=A=0 t8 Xlock A t9 等待 Slock A Unlock A t1A=X+2 等待 0 写回A(=2) 等待 t1Unlock A 等待 1 X=A=2 t1 Xlock A 2 Unlock A 等待 t1A=X*2 3 写回A(=4) Unlock A Unlock A 从上可见,按照T3-T1-T2的顺序执行结果A=4完全与串行化调度相同,所以是一个不产生死锁的可串行化的调度。

(5)若三个事务都遵守两段锁协议,下图是一个产生死锁的调度。

时T1 T2 T3 间

t1 t2 t3 t4 t5 t6 t7 t8 Slock A X=A=0 Xlock A 等待 Slock A X=A=0 Xlock A 等待 Slock A X=A=0 Xlock A 等待

上例中,T1申请对X1加写锁,由于T2对X1加了读锁,所以不成功,处于等待状态;T2申请对A加写锁,由于T1对A加了读锁,所以不成功,处于等待状态;T3申请对A加读锁,由于T1对A加了读锁,所以不成功,处于等待状态。因此,三个事务都处于等待状态,产生死锁。

精心搜集整理,只为你的需要

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务