数据库 第八章 并发控制(2)

2019-01-07 15:29

Xlock A 等待 Slock A Y=A=0 Xlock A 等待 Slock A Y=A=0 Xlock A 等待 14.答:两段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁。 在对任何数据进行读,写操作之前,首先要申请并获得对该数据的封锁; 在释放一个封锁之后,事务不再申请和获得任何其他封锁。 两段的含义是,事务分为两个阶段:

第一个阶段是获得封锁,也称为扩展段,在这个阶段,事务可以申请获得任何数据项上的任何类型的锁,但是不能释放任何锁;

第二阶段是释放封锁,也称为收缩阶段,在这阶段,事务释放已经获得的但是不能在申请任何锁。 15.证明:

首先以两个并发事务T1和T2为例,存在多个并发事务的情形可以类推。根据可串行化定义可知,事务不可串行化可能发生在下列两种情况: (1) 事务T1写某个数据对象A,T2读或写A; (2) 事务T1读或写某个数据对象A,T2写A 下面称A 为潜在冲突对象。

设T1 和T2 访问的潜在冲突的公共对象为{A1, A2, A3,……An}。

不失一般性,假设这组潜在冲突对象中X={A1, A2,……,Ai}均符合情况1。 Y={ Ai+1,………, An}符合所情况(2)

?x∈X,T1 需要Xlock x

T2 需要Slock x 或Xlock x

1) 如果操作1先执行,则T1获得锁,T2等待

由于遵守两段锁协议,T1在成功获得X和Y中全部对象及非潜在冲突对象的锁后,才会释放锁。

这时如果?w∈X或Y,T2已获得w 的锁,则出现死锁;

否则,T1在对X,Y中的对象全部处理完毕后,T2才能执行。

这相当于按T1,T2的顺序串行执行,根据可串行化定义,T1和T2的调度是可串行化的。

16.答:

T1 T2 Slock B 读 B=2 Y=B UnLock B Xlock A Slock A A=Y+1 写回 A=3 UnLock A 等待 等待 等待 等待 Slock A 读A=3 X=A UnLock A Xlock B B=X+1 写回B=4 UnLock B 17.答:引进意向锁是为了提高封锁子系统的效率。该封锁子系统支持多种封锁粒度。 原因是:在多粒度封锁方法中一个数据对象可能以良种方式加锁---显式封锁和隐式封锁(有关的概念参见《概论》8。7)。因此系统在对某一数据对象加锁时不仅要检查该数据对象上有无(显式和隐式)封锁与之冲突 ,还要检查其所有上级结点和所有下级结点,看申请的封锁是否与这些结点上的(显式和隐式)封锁冲突,显然,这样的检查方法效率很低。为此引进了意向锁。

意向锁的含义是:对任一结点加锁时,必须先对它的上层结点加意向锁。

例如事务T要对某个元组加X锁,则首先要对关系和数据库加IX锁。换言之,对关系和数据库加IX锁,表示它的后裔结点---某个元组拟(意向)加X锁。

引进意向锁后,系统对某一数据对象加锁不必逐个检查与下一级结点的封锁冲突了。例如,事务T要对关系R加X锁,系统只要检查根结点数据库和R本身是否已加了不相容的锁(如发现已经加了IX,则与X冲突),而不再需要搜索和检查R中的每一个元组是否加了X锁或是S锁。 18.答:IS锁

如果对一个数据对象加IS锁,表示它的后裔结点拟(意向)加S锁。例如,要对某个元组加S锁,则要首先对关系和数据库加IX锁。 IX锁

如果对一个数据对象加IX锁,表示它的后裔结点拟(意向)加X锁。例如,要对某个元组加X锁,则要首先对关系和数据库加IX锁。 SIX锁

如果对一个数据对象加SIX锁,表示对它加S锁,再加IX锁,即SIX=S+IX T0 T1 S X IS IX Y N Y N N N N N N Y Y N Y Y Y Y N N Y Y N Y N N Y N N Y Y Y Y Y Y Y S X IS IX SIX - SIX N - Y 19.答:(略)。 20.答:(略)。


数据库 第八章 并发控制(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:通过《道林.格雷的画像》浅析王尔德的唯美主义

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: