假如该调度已经产生死锁,如果要从事务T1,T2中进行回滚以解除死锁,从代价最小的角度考虑,应回滚事务( )。A.T1B.T2C.T1和T2D.T1或T2
假如该调度已经产生死锁,如果要从事务T1,T2中进行回滚以解除死锁,从代价最小的角度考虑,应回滚事务( )。
A.T1
B.T2
C.T1和T2
D.T1或T2
B.T2
C.T1和T2
D.T1或T2
参考解析
解析:本题考查事务调度的知识。事务的执行由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代价最小。
相关考题:
数据库中事务的并发操作可能会引起死锁,引起死锁的原因是不同事务对数据项的资源占有,导致其他事务不能得到资源,从而引起相互等待导致死锁。假设某数据库系统中存在一个等待事务集{T1,T2,T3,T4,T5},其中T1正在等待被T2锁住的数据项A2,T2正在等待被T4锁住的数据项A4,T3正在等待被T4锁住的数据项A4,T5正在等待被T1锁住的数据项A。则关于系统状态正确的是( )。A.系统处于死锁状态,需要撤销其中任意一个事务即可退出死锁状态B.系统处于死锁状态,通过撤销T4可使系统退出死锁状态C.系统处于死锁状态,通过撤销T5可使系统退出死锁状态D.系统未处于死锁状态,不需要撤销其中的任何事务
系统中同时运行多个事务,若其中一个事务因为自身故障被系统强行退出,而其它事务仍正常运行,这种故障称为()。该故障发生时,会造成数据库的不一致,解决的方法是()。A.事务故障B.系统故障C.介质故障D.程序BUG@@@SXB@@@A.由用户对该事务进行回滚B.由程序对该事务进行补偿操作C.由DBMS对该事务进行回滚D.由DBA对该事务进行回滚
如右图所示的调度,其中事务T1、T2仅对数据项A、B进行操作,则该调度( );A.满足两段锁协议、不发生死锁B.满足两段锁协议、会发生死锁C.不满足两段锁协议、不发生死锁D.不满足两段锁协议、会产生死锁
系统中同时运行多个事务,若其中一个事务因为自身故障被系统强行退出,而其它事务仍正常运行,这种故障称为( )。该故障发生时,会造成数据库的不一致,解决的方法是(请作答此空)。A.由用户对该事务进行回滚B.由程序对该事务进行补偿操作C.由DBMS对该事务进行回滚D.由DBA对该事务进行回滚
回滚数据有哪些特性()。A、回滚数据用于支持回滚操作和读取一致性B、保证对失败的事务处理进行恢复C、回滚段的数据不会永久保留,当该事务结束时,回滚段被释放D、回滚段的数据会永久保留到磁盘上,除非用户手动删除
关于事务处理与回滚数据说法正确的是()。A、每个事务处理只分配给一个回滚段B、每个事务处理可以同时分配多个回滚段,以备循环使用C、一个回滚段可以同时服务于多个事务处理D、在事务处理的整个过程中,更改数据时,原始值会被复制到回滚段
关于执行ROLI。BACK命令下列说法错误的是()。A、如果启动某个事务的会话失败,那么PMON进程会检测到所存在的问题并回滚这个事务B、发出ROLLBACK命令时,用户不能执行手动的回滚操作C、回滚UPDATE语句时,未被更新的列会从撤销块复制回表数据块D、回滚DELETE语句时,Oracle会根据撤销块中的数据构造一条完整的插入语句
在多个事务并发执行时,如果并发控制措施不好,则可能会造成事务T1读了事务T2的“脏”数据。这里的“脏”数据是指()。A、T1回滚前的数据B、T1回滚后的数据C、T2回滚前的数据D、T2回滚后的数据
单选题在多个事务并发执行时,如果并发控制措施不好,则可能会造成事务T1读了事务T2的“脏”数据。这里的“脏”数据是指()。AT1回滚前的数据BT1回滚后的数据CT2回滚前的数据DT2回滚后的数据