简述两段锁协议的含义。

题目
问答题
简述两段锁协议的含义。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

______能保证不产生死锁。

A.两段锁协议

B.一次封锁法

C.2级封锁法协议

D.3级封锁协议


正确答案:B

第2题:

如右图所示的调度,其中事务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代价最小。

第3题:

试述两段锁协议的概念。


答案:两段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁。
在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;在释放一个封锁之后,事务不再申请和获得任何其他封锁。
"两段"的含义是,事务分为两个阶段:
第一阶段是获得封锁,也称为扩展阶段,在这阶段,事务可以申请获得任何数据项上的任何类型的锁,但是不能释放任何锁;
第二阶段是释放封锁,也称为收缩阶段,在这阶段,事务释放已经获得的锁,但是不能再申请任何锁。

第4题:

以下关于两段锁协议的叙述,正确的是()。

  • A、在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁
  • B、在解除一个封锁之后,事务不再申请和获得任何其他封锁
  • C、两段锁协议是保证并发调度可串行化的必要条件
  • D、两段锁协议是保证并发调度可串行化的充分条件

正确答案:A,B,D

第5题:

数据库中能保证不产生死锁的方法为()。



A.两段锁协议
B.一次封锁法
C.2级封锁协议
D.3级封锁协议

答案:B
解析:
一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。一次就将以后要用到的全部数据加锁,势必扩大了封锁的范围,从而降低了系统的并发度。降低并发度就意味着能保证不产生死锁。

第6题:

● 为保证并发事务调度的正确性,可采用的封锁协议是 () 。()A.PXC协议 B.PSC协议 C.两段锁协议 D.PSC或PXC协议


正确答案:C
如果多个事务并发执行的结果与按串行执行的结果相同,叫可串行化调度。可串行化调度是并发事务正确性的准则。
  两段锁协议(2PL Two-Phase Locking)是保证并发调度可串行性的封锁协议。指必须分两个阶段对数据进行加锁和解锁,分扩阶段(申请加锁),第二阶段是收缩阶段(释放锁)。但2PL不能保证不发生死锁。

第7题:

下面说法中错误的是( ).

A.并发事务如果不加控制,可能会破坏事务的隔离性
B.可串行化调度是正确的调度
C.两段锁协议能够保证可串行化调度
D.两段锁协议能够确保不会产生死锁

答案:D
解析:

第8题:

能保证不产生死锁。

A.两段锁协议

B.一次封锁法

C.2级封锁协议

D.3级封锁协议


正确答案:B
解析:本题考查应试者对事务处理程序加锁协议的掌握。两段锁协议是指事务处理程序对数据进行读写操作前加锁,释放一个锁之后就不能再加锁,两段锁协议用来保证事务的可串行化(执行结果的正确性),但并不能保证产生死锁;一次封锁法是指事务处理程序在所有要进行读写操作的数据全部先加锁后再进行访问,在两段锁协议的基础上要求更严格,能保证不产生死锁;2级封锁协议是指事务处理程序在进行修改数据操作之前先对其加独占锁,直到事务处理程序结束前释放,在进行读取数据操作之前先对其加共享锁,读完后就释放,2级封锁协议可以防止丢失修改和读“脏”数据;3级封锁协议比是指事务处理程序在进行修改数据操作之前先对其加独占锁,直到事务处理程序结束前释放,在进行读取数据操作之前先对其加共享锁,直到事务处理程序结束前释放,比2级封锁协议更严格,可以防止丢失修改、读“脏”数据和不可重复读三种错误。除一次封锁法外,其他3个协议都是保证程序执行的正确性的,都可能产生死锁,但死锁问题可以由DBMS进行处理,而一次封锁法在实现上也困难,通常不采用。此题答案为B。

第9题:

若并发事务的调度是可串行化的,则这些事务一定都遵守两段锁协议。()


答案:错
解析:
两段锁协议是指每个事务的执行可以分为两个阶段:生长阶段(加锁阶段)和衰退阶段(解锁阶段)。事务遵守两段锁协议是可串行化调度的充分条件,而不是必要条件。即可串行化的调度中,不一定所有事务都必须符合两段锁协议。

第10题:

下面说法不正确的是()

  • A、遵循两段锁协议保证不会产生死锁
  • B、如果事务都遵循两段锁协议,则这些事务的任何并发调度都是可串行化的
  • C、不遵循两段锁协议一定产生死锁
  • D、并发调度是正确的,当且仅当这些事务遵循两段锁协议

正确答案:A,C,D