首页 > 试题广场 >

已知事务T1 的封锁序列为:

[单选题]

已知事务T1 的封锁序列为:LOCK S(A)LOCK S(B)LOCK X(C)

UNLOCK(B) UNLOCK (A) UNLOCK (C)

事务T2 的封锁序列为:LOCK S(A) UNLOCK (A) LOCK S(B)

LOCK X(C) UNLOCK (C) UNLOCK (B)

则遵守两段封锁协议的事务是( )。

  • T1
  • T2
  • T1和T2
  • 没有
二级封锁协议是修改数据之前加上X锁,直到事务结束才释放X锁,读取事务之前加上S锁,读取完毕释放S锁;
事务T2在还没有结束就将X锁释放了
发表于 2017-08-15 21:05:32 回复(1)
两段锁协议是指每个事务的执行可以分为两个阶段:生长阶段(加锁阶段)和衰退阶段(解锁阶段)。 加锁阶段:在该阶段可以进行加锁操作。在对任何数据进行读操作之前要申请并获得S锁,在进行写操作之前要申请并获得X锁。加锁不成功,则事务进入等待状态,直到加锁成功才继续执行。 解锁阶段:当事务释放了一个封锁以后,事务进入解锁阶段,在该阶段只能进行解锁操作不能再进行加锁操作。 两段封锁法可以这样来实现:事务开始后就处于加锁阶段,一直到执行ROLLBACK和COMMIT之前都是加锁阶段。ROLLBACK和COMMIT使事务进入解锁阶段,即在ROLLBACK和COMMIT模块中DBMS释放所有封锁。
发表于 2018-07-23 17:55:10 回复(0)
加锁阶段,解锁阶段。事务进入解锁阶段,在该阶段只能进行解锁操作不能再进行加锁操作。
发表于 2018-05-26 18:52:41 回复(0)
加锁阶段只能加锁,不能解锁;
解锁阶段只能解锁,不能加锁。
发表于 2020-04-01 13:59:03 回复(0)
1. 同一个事务内需要在多个数据上加锁,所有的加锁操作都只能在同一个阶段完成,在这个阶段内,不允许对对已经加锁的数据项进行解锁操作,即加锁和解锁操作不能交叉执行(同一个事务内)
2. 所有遵守两端锁协议的事务,其并行执行的结果一定是正确的。
发表于 2019-09-29 20:41:58 回复(0)
两段封锁协议是指加锁和解锁分为两个阶段进行,不能交叉执行
发表于 2019-06-02 19:46:40 回复(0)
我感觉都不对
发表于 2018-04-28 17:41:01 回复(0)