如右图所示的调度,其中事务T1、T2仅对数据项A、B进行操作,则该调度( );

题目
如右图所示的调度,其中事务T1、T2仅对数据项A、B进行操作,则该调度( );

A.满足两段锁协议、不发生死锁
B.满足两段锁协议、会发生死锁
C.不满足两段锁协议、不发生死锁
D.不满足两段锁协议、会产生死锁
参考答案和解析
答案:B
解析:
本题考查事务调度的知识。事务的执行由DBMS进行调度,在执行事务的过程中加入相关锁指令以控制事务满足ACID属性。常用的方式是两段锁协议(2PL),即事务的加锁和解锁分为两个阶段,第一阶段为锁增长阶段,只能加锁不能解锁,第二阶段为锁减少阶段,只能解锁不能加锁。图中的调度,事务T1对8、A两个数据项加锁中间无解锁指令,满足2PL协议;事务T2对A、B两个数据项加锁中间无解锁指令,也满足2PL协议。2PL协议不能避免死锁。图中事务T1先对数据项B加了独占锁,事务T2先对数据A加了共享锁;随后事务T2申请数据项B上的共享锁,只能等待事务T1释放B上的独占锁;事务T1申请数据项A上的独占锁,只能等待事务T2释放A上的共享锁。两个事务相互等待造成死锁。死锁的解除由DBMS来完成。需要在造成死锁的多个事务中选择一个回滚代价最小的事务进行强制回滚,并将该事务置于事务队列中稍后执行。图中事务T1对数据B己经做了修改,事务T2只是读取了数据A,相对而言,回滚事务T2代价最小。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

设有两个事务T1,T2,其并发操作如表所示,下列评价正确的是______。

A.该操作不存在问题

B.该操作丢失修改

C.该操作不能重复读

D.该操作读脏数据


正确答案:D
解析:事务T1读出数据A并做了修改,事务T2读取同一数据,随后T1由于某种原因被撤销,执行回滚,这时T1已修改过的数据恢复原值 100,T2读到的数据200就与数据库中的数据不一致,称为读脏数据。

第2题:

设两个事务T1,T2,其并发操作如下表所示,下列评价正确的是______。

A.该操作不存在问题

B.该操作丢失修改

C.该操作不能重复读

D.该操作读脏数据


正确答案:D
解析:事务T1读出数据A并修改,事务T2读取同一数据,随后T1由于某种原因撤销,执行回滚,这时T1已经修改过的数据恢复原值100,T2读到的数据是200与数据库中的数据不一致,称为读脏数据。

第3题:

设有两个事务T1和T2,其并发操作如下表所示,则下列说法中正确的是(本题分值:1分) 步骤 T1 T2 1 读A=10 2 读A=10 3 写A=A-3 4 写A=A-1

A.该操作序列不存在问题

B.该操作序列丢失修改

C.该操作序列不能重复读

D.该操作序列读出"脏"数据


正确答案:B

第4题:

事务T1,T2,T3分别对数据D1,D2,D3并发操作如下图所示,其中T1与T2问的并发操作存在的问题是 (1) 。T2与T3问的并发操作存在的问题是 (2) 。

1.


正确答案:不能重复读
不能重复读

第5题:

数据库中数据项A和数据项B的当前值分别为1 000和2 000,T1和T2为两个事务,调度一和调度二是事务T1和T2的两个调度。

下列说法正确的是

A.调度一是串行调度,调度二是并发调度,它们等价

B.调度一和调度二都是并发调度,它们等价

C.调度二执行后,数据项A和B的值分别为950和2100

D.调度一执行后,数据项A和B的值分别为950和2050


正确答案:C
解析:调度一是串行调度,调度二是并发调度。调度一的结果易知为A=855,B=2145,调度二执行过程为:

第6题:

设有两个事务T1和T2,其并发操作序列如下表所示。则下面说法中正确的是________。

A.该操作序列不存在问题

B.该操作序列丢失更新

C.该操作序列不能重复读

D.该操作序列读出“脏”数据


正确答案:B
解析:由表可知,T1读取了数据项A,然后T2也读取了数据项A,它们读到的值都为100。随后事务T1对数据项A进行更新,在刚才读的基础上A的值加10,然后事务T2对数据项A进行更新,在刚才写的基础上A的值减 10。当事务T2对数据项A进行更新时,事务T1所做的更新丢失了,被事务T2所做的更新覆盖了。

第7题:

若系统中存在一个等待事务集{T0,T1,T2,...,Tn},其中T0正等待被T1锁住的数据项A1,T1正等待被T2锁住的数据项A2,...,Tn-1正等待被Tn锁住的数据项An,Tn正等待被T0锁住的数据项A0,则系统处于______的工作状态。

A.并发处理

B.封锁

C.循环

D.死锁


正确答案:D
解析:与操作系统中的进程调度类似,在数据库系统中,若系统中存在一个等待事务集 {T0,T1,T2,...,Tn},其中T0正等待被T1锁住的数据项A1,T1正等待被T2锁住的数据项A2,...,Tn-1正等待被Tn锁住的数据项An,Tn正等待被T0锁住的数据项A0,则系统处于死锁的工作状态。在数据库中,产生死锁的原因是2个或多个事务都已封锁了一些数据对象,然后又都请求对已为其他事务封锁的数据对象加锁,从而出现死等待。预防死锁的方法通常有一次封锁法(每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行)和顺序封锁法(预先对数据对象规定一个封锁顺序,所有事务都按这个顺序进行封锁),死锁的诊断方法一般有超时法和等待图法。

第8题:

若系统中存在一个等待事务集{T0,T1,T2,…,Tn},其中,T1正等待被T1锁住的数据项D1,T1正等待被T2锁住的数据项D2,…,Tn-1正等待被Tn锁住的数据项Dn,Tn正等待被T0锁住的数据项D0,则系统处于()的工作状态。

A.封锁

B.死锁

C.循环

D.并发处理


参考答案:B

第9题:

存在一个等待事务集{T0,T1,…,Tn},其中T0正等待被T1锁住的数据项,T1正等待被T2锁住的数据项,Tn-1正等待被Tn锁住的数据项,且Tn正等待被T0锁住的数据项,则系统的工作状态处于

A.并发处理

B.封锁

C.循环

D.死锁


正确答案:D
解析:这种循环等待的现象称为死锁。

第10题:

下列关于事务T1,和T2的两种调度的叙述中,哪个是正确的?

A.调度一和调度二都是并发调度,它们等价

B.调度一和调度二都是串行调度,它们不等价

C.调度一是串行调度,调度二是并发调度,它们等价

D.调度一是串行调度,调度二是并发调度,它们不等价


正确答案:C
解析:串行调度由来自各事务的指令序列组成,其中属于同一事务的指令在调度中紧挨在一起。调度一中,事务T1和T2各自的指令都紧挨在一起,故为串行调度。调度二中T1和T2是两个并发执行的事务,其中的一个事务执行一段时间,然后切换,执行第二个事务一段时间,接着又切换到第一个事务执行一段时间,如此进行下去,这样的调度为并发调度。而调度一和调度二执行完成后,得到的状态与串行调度一样,A+B之和保持不变。故选项c正确。

更多相关问题