若系统中存在n个等待事务T i (i=0,1,2,…,n-1),其中:T 0 正等待被T 1 锁住的数据项A 1 ,T 1 正等待被T 2 锁住的数据项A 2 ,…,T i 正等待被T i+1 锁住的数据项A i+1 ,…,T n-1 正等待被T 0 锁住的数据项A 0 ,则系统处于___________状态。
【正确答案】 B
【答案解析】解析:本题考查关系数据库事务处理方面的基础知识。 与操作系统一样,封锁的方法可能引起活锁和死锁。例如事务T 1 封锁了数据R,事务T 2 请求封锁R,于是T 2 等待。T 3 也请求封锁R,当T 1 释放了R上的封锁之后系统首先批准了T 3 的请求,T 2 仍然等待。然后T 4 又请求封锁R,当T 3 释放R上的封锁后系统又批准了T 4 的请求,……。T 2 有可能长期等待,这就是活锁。避免活锁的简单方法是采用先来先服务的策略。即让封锁子系统按请求封锁的先后次序对事务排队。数据尺上的锁一旦释放就批准申请队列中的第一个事务获得锁。 又如事务T 1 封锁了数据R 1 ,T 2 封锁了数据R 2 ,T 3 封锁了数据R 3 。然后T 1 又请求封锁R 2 ,T 2 请求封锁R 3 ,T 3 请求封锁R 1 。于是出现T 1 等待T 2 释放R 2 上的封锁,T 2 等待T 3 释放R 3 上的封锁,T 3 等待T 1 释放R 1 上的封锁。这就使得三个事务永远不能结束。即多个事务都请求封锁别的事务已封锁的数据,导致无法运行下去的现象称为死锁。