当前位置:首页 → 计算机类 → 软件水平考试 → 中级数据库系统工程师->如右图所示调度,其中事务T1、T2仅对数据项A、B进行操作,
如右图所示调度,其中事务T1、T2仅对数据项A、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代价最小。









