问题
单项选择题
若系统中存在一个等待事务集(T0,T1,T2,…,Tn),其中T0正等待被T1锁住的数据项A1,T1正等待被T2锁住的数据项A2,…,Tn-1正等待Tn锁住的数据项An,Tn正等待被T0锁住的数据项A0,则系统处于 (1) 的工作状态。
A.并发处理
B.封锁
C.循环
D.死锁
答案
参考答案:D
解析: 与操作系统中的进程调度类似,在数据库系统中,若存在一个等待事务集{T0,T1,T2…,Tn},其中T0正等待被T1锁住的数据项A1,T1正等待被T2锁住的数据项A2,…,Tn-1正等待被Tn锁住的数据项An,Tn正等待被T0锁住的数据项A0,则系统处于死锁的工作状态。
在数据库中,产生死锁的原因是两个或多个事务都己封锁了一些数据对象,然后又都请求对已为其他事务封锁的数据对象加锁,从而出现死等待。预防死锁的方法通常有一次封锁法(每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行)和顺序封锁法(预先对数据对象规定一个封锁顺序,所有事务都按这个顺序进行封锁)。死锁的诊断方法一般有超时法和等待图法。