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

题目

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

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

相似考题
更多“以下关于两段锁协议的叙述,正确的是()。A、在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁B、在解除一个封锁之后,事务不再申请和获得任何其他封锁C、两段锁协议是保证并发调度可串行化的必要条件D、两段锁协议是保证并发调度可串行化的充分条件”相关问题
  • 第1题:

    能保证不产生死锁。

    A.两段锁协议

    B.一次封锁法

    C.2级封锁协议

    D.3级封锁协议


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

  • 第2题:

    下列叙述中正确的是

    A.遵守两阶段封锁协议的并发事务一定是可串行化的

    B.遵守两阶段封锁协议的并发事务一定不会发生死锁

    C.遵守两阶段封锁协议的并发事务一定不会发生级联回滚

    D.遵守两阶段封锁协议的并发事务的所有锁一定要到事务提交之后才解锁


    正确答案:D
    解析:系列中的每个事务遵从封锁协议的一组规则。这些规则规定事务何时对各数据项进行加锁、解锁。封锁协议限制了可能的调度数目。(1)保证可串行性的一个协议是强有力两阶段封锁协议。(2)通过将两阶段封锁修改为严格两阶段封锁协议来避免级联回滚。(3)两阶段封锁的另一个变体是强两阶段封锁协议,它要求事务提交之间不得释放任何锁。(4)不幸的是封锁自身也会引发问题,主要的问题是死锁。两阶段封锁并不保证不会发生死锁。发生死锁时系统必须能检测并解释它。

  • 第3题:

    下列叙述中,正确的是

    A.不遵循两段锁协议的并发调度一定是不可串行的

    B.两级封锁协议可能保证数据的可重读性

    C.对某处数据对象加了X封锁,则还可以在该数据对象上加S封锁

    D.遵循两段封锁协议的并发事务一定不会发生死锁


    正确答案:B
    解析:两段锁协议是保证并发调度可串行化的充分条件:对某个数据对象加了X锁,则其他任何事务不能再对该数据对象加任何类型的锁;遵循两段锁协议的并发事务可能发生死锁。

  • 第4题:

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

  • 第5题:

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



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

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

  • 第6题:

    下面说法不正确的是()

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

    正确答案:A,C,D

  • 第7题:

    下面说法正确的是()

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

    正确答案:D

  • 第8题:

    ()能保证不产生死锁。

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

    正确答案:B

  • 第9题:

    要求事务在读取数据前先加共享锁,且直到该事务执行结束时才释放相应的锁,这种封锁协议是()

    • A、一级封锁协议
    • B、二级封锁协议
    • C、三级封锁协议
    • D、两段锁协议

    正确答案:C

  • 第10题:

    判断题
    可串行化的调度一定遵守两段锁协议。(  )
    A

    B


    正确答案:
    解析:

  • 第11题:

    单选题
    ()能保证不产生死锁。
    A

    两段锁协议

    B

    一次封锁法

    C

    2级封锁法协议

    D

    3级封锁协议


    正确答案: D
    解析: 暂无解析

  • 第12题:

    单选题
    要求事务在读取数据前先加共享锁,且直到该事务执行结束时才释放相应的锁,这种封锁协议是()
    A

    一级封锁协议

    B

    二级封锁协议

    C

    三级封锁协议

    D

    两段锁协议


    正确答案: D
    解析: 暂无解析

  • 第13题:

    ______能保证不产生死锁。

    A.两段锁协议

    B.一次封锁法

    C.2级封锁法协议

    D.3级封锁协议


    正确答案:B

  • 第14题:

    下列叙述中,正确的是( )。A.不遵循两段封锁协议的并发调度一定是不可串行的B.两级封锁协议可以保证数据的可重读性C.对某个数据对象加了X封锁,则还可以在该数据对象上加S封锁D.遵循两段封锁协议的并发事务一定不会发生死锁


    正确答案:B
    A,D的说法太过于绝对,不准确,C项对数据对象加了X封锁之后,则不能再加S封锁。

  • 第15题:

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


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

  • 第16题:

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

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

    答案:D
    解析:

  • 第17题:

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


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

  • 第18题:

    试证明,若并发事务遵守两段锁协议,则对这些事务的并发调度是可串行化的。


    正确答案: 证明:首先以两个并发事务Tl和T2为例,存在多个并发事务的情形可以类推。根据可串行化定义可知,事务不可串行化只可能发生在下列两种情况:
    (l)事务Tl写某个数据对象A,T2读或写A;
    (2)事务Tl读或写某个数据对象A,T2写A。
    下面称A为潜在冲突对象。
    设Tl和T2访问的潜在冲突的公共对象为{A1,A2…,An}。不失一般性,假设这组潜在冲突对象中X=(A1,A2,…,Ai}均符合情况1。Y={Ai+1,…,An}符合所情况(2)。
    VX∈x,Tl需要XlockX①
    T2需要Slockx或Xlockx②
    1)如果操作①先执行,则Tl获得锁,T2等待
    由于遵守两段锁协议,Tl在成功获得x和Y中全部对象及非潜在冲突对象的锁后,才会释放锁。
    这时如果存在w∈x或Y,T2已获得w的锁,则出现死锁;否则,Tl在对x、Y中对象全部处理完毕后,T2才能执行。这相当于按Tl、T2的顺序串行执行,根据可串行化定义,Tl和几的调度是可串行化的。
    2)操作②先执行的情况与(l)对称因此,若并发事务遵守两段锁协议,在不发生死锁的情况下,对这些事务的并发调度一定是可串行化的。证毕。

  • 第19题:

    两段式封锁是可串行化的()条件。


    正确答案:充分

  • 第20题:

    以下关于事务调度和封锁的描述中,正确的是()。

    • A、遵守两段封锁协议的并发事务一定是可串行化的
    • B、可串行化的并发事务一定遵守两段封锁协议
    • C、遵守两段封锁协议的并发事务不一定是可串行化的
    • D、遵守两段封锁协议的并发事务一定不会产生死锁

    正确答案:A

  • 第21题:

    如果事务都遵循两段锁协议,则这些事务的任何并发调度都是可串行化的


    正确答案:正确

  • 第22题:

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

    在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁

    B

    在解除一个封锁之后,事务不再申请和获得任何其他封锁

    C

    两段锁协议是保证并发调度可串行化的必要条件

    D

    两段锁协议是保证并发调度可串行化的充分条件


    正确答案: C,D
    解析: 暂无解析

  • 第23题:

    问答题
    试证明,若并发事务遵守两段锁协议,则对这些事务的并发调度是可串行化的。

    正确答案: 证明:首先以两个并发事务Tl和T2为例,存在多个并发事务的情形可以类推。根据可串行化定义可知,事务不可串行化只可能发生在下列两种情况:
    (l)事务Tl写某个数据对象A,T2读或写A;
    (2)事务Tl读或写某个数据对象A,T2写A。
    下面称A为潜在冲突对象。
    设Tl和T2访问的潜在冲突的公共对象为{A1,A2…,An}。不失一般性,假设这组潜在冲突对象中X=(A1,A2,…,Ai}均符合情况1。Y={Ai+1,…,An}符合所情况(2)。
    VX∈x,Tl需要XlockX①
    T2需要Slockx或Xlockx②
    1)如果操作①先执行,则Tl获得锁,T2等待
    由于遵守两段锁协议,Tl在成功获得x和Y中全部对象及非潜在冲突对象的锁后,才会释放锁。
    这时如果存在w∈x或Y,T2已获得w的锁,则出现死锁;否则,Tl在对x、Y中对象全部处理完毕后,T2才能执行。这相当于按Tl、T2的顺序串行执行,根据可串行化定义,Tl和几的调度是可串行化的。
    2)操作②先执行的情况与(l)对称因此,若并发事务遵守两段锁协议,在不发生死锁的情况下,对这些事务的并发调度一定是可串行化的。证毕。
    解析: 暂无解析