问题 单项选择题

若系统中存在一个等待事务集T0,T1,T2,…Tn,其中T0正等待被T1锁住的数据项D1,T1正等待被T2锁住的数据项D2,……,Tn-1正等待被Tn锁住的数据项Dn,Tn正等待被T0锁住的数据项D0,则系统处于______的工作状态。

A.封锁
B.死锁
C.循环
D.并发处理

答案

参考答案:B

解析: 与操作系统中的进程调度相类似,若数据库系统中存在一个等待事务集{T0,T1,T2,…,Tn),其中T0正等待被T1锁住的数据项D1,T1正等待被T2锁住的数据项D2,……,Tn-1正等待被Tn锁住的数据项Dn,Tn正等待被T0锁住的数据项D0,则系统处于死锁的工作状态。这是因为系统中两个或多个事务都已封锁了相关数据对象,而其它事务又请求对这些数据对象加锁,从而出现死等待。
通常,死锁的诊断方法有超时法和等待图法等。其中,超时法是指一个事务的等待时间超过了规定的时限,就认为发生了死锁现象。这种诊断方法具有实现简单的优点,但存在可能误判死锁的现象,若时限若设置得太长,死锁发生后又不能及时被发现。
等待图法是指用事务等待图动态反映所有事务的等待情况,即并发控制子系统周期性地检测事务等待图,如果发现图中存在回路,则判断系统中出现了死锁。
预防死锁的发生就是要破坏产生死锁的条件。通常有一次封锁法和顺序封锁法等预防方法。其中,一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。顺序封锁法是指预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。

单项选择题
单项选择题