请给出检测死锁发生的一种方法,当发生死锁后如何解除死锁?
数据库系统一般采用允许死锁发生, DBMS 检测到死锁后加以解除的方法。 DBMS 中诊断死锁的方法与操作系统类似,一般使用超时法或事务等待图法。超时法是:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。超时法实现简单,但有可能误判死锁,事务因其他原因长时间等待超过时限时,系统会误认为发生了死锁。若时限设置得太长,又不能及时发现死锁发生。 DBMS 并发控制子系统检测到死锁后,就要设法解除。通常采用的方法是选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有锁,使其他事务得以继续运行下去。当然,对撤销的事务所执行的数据修改操作必须加以恢复。
举一反三
内容
- 0
银行家算法是一种( )的方法,它能使系统不发生死锁。 A: 死锁预防 B: 死锁检测 C: 死锁避免 D: 死锁解除
- 1
解决死锁问题主要有两类方法:一类是预防死锁的发生,另一类是允许死锁发生,发现后解除。数据库中通常采取的是预防死锁发生的方法。
- 2
25.死锁定理是用于处理死锁的( )方法。 A: 预防死锁 B: 避免死锁 C: 检测死锁 D: 解除死锁
- 3
为进程进行有序分配是一种______方法,它能使系统不发生死锁。 A: 死锁预防 B: 死锁检测 C: 死锁避免 D: 死锁解除
- 4
银行家算法是一种()算法。 A: 死锁避免 B: 死锁防止 C: 死锁检测 D: 死锁解除