文件名称:锁等待与死锁检测-the design and analysis of algorithms
文件大小:4.17MB
文件格式:PDF
更新时间:2024-06-29 04:39:03
达梦,DM7
24.8 锁等待与死锁检测 阻塞和死锁是会与并发事务一起发生的两个事件,它们都与锁相关。当一个事务正在占 用某个资源的锁,此时另一个事务正在请求这个资源上与第一个锁相冲突的锁类型时,就会 发生阻塞。被阻塞的事务将一直挂起,直到持有锁的事务放弃锁定的资源为止。死锁与阻塞 的不同之处在于死锁包括两个或者多个已阻塞事务,它们之间形成了等待环,每个都等待其 他事务释放锁。例如事务 1给表 T1上了排他锁,第二个事务给表 T2上了排他锁,此时事 务 1 请求 T2 的排它锁,就会处于等待状态,被阻塞。若此时 T2 再请求表 T1 的排他锁, 则 T2也处于阻塞状态。此时这两个事务发生死锁,DM数据库会选择牺牲掉其中一个事务。 在 DM数据库中,INSERT、UPDATE、DELETE是最常见的会产生阻塞和死锁的语句。 INSERT发生阻塞的唯一情况是,当多个事务同时试图向有主键或 UNIQUE约束的表中 插入相同的数据时,其中的一个事务将被阻塞,直到另外一个事务提交或回滚。一个事务提 交时,另一个事务将收到唯一性冲突的错误;一个事务回滚时,被阻塞的事物可以继续执 行。 当 UPDATE 和 DELETE 修改的记录,已经被另外的事务修改过,将会发生阻塞,直到 另一个事务提交或回滚。 24.9 闪回 当用户操作不慎导致错误的删改数据时,非常希望有一种简单快捷的方式可以恢复数 据。闪回技术,就是为了用户可以迅速处理这种数据逻辑损坏的情况而产生的。 闪回技术主要是通过回滚段存储的 UNDO 记录来完成历史记录的还原。设置