数据库 并发控制(2)死锁和意向锁

死锁的处理

数据库 并发控制(2)死锁和意向锁_第1张图片

 死锁的检测

数据库 并发控制(2)死锁和意向锁_第2张图片

数据库 并发控制(2)死锁和意向锁_第3张图片

死锁的解除 

当多个事务发生死锁的时候 需要牺牲一些事务,但是不同的事务牺牲的代价是不一样的,我们需要考虑不同的因素并且 采用一定的策略进行替换。 

数据库 并发控制(2)死锁和意向锁_第4张图片

 死锁的预防

在事务启动之前,DBMS为每一个事务分配一个唯一且固定的优先级 开始越早 优先级越高

具体原则请查阅资料 本文仅列举通俗例子。

Wait-Die规则:尊老爱幼

数据库 并发控制(2)死锁和意向锁_第5张图片

Wound-Wait规则--论资排辈原则 

数据库 并发控制(2)死锁和意向锁_第6张图片

 多粒度锁

之前我们设立锁 没有考虑设立锁的对象是列表还是元组 但是实际应用中 需要考虑操作的对象是页还是列表还是元组 如果是table或者page的话 下面还有好多个对象 这些对象就是元组 元组是操作的最小单元 给根节点加锁也需要考虑 他的子孙  是否加锁 引入

数据库 并发控制(2)死锁和意向锁_第7张图片

数据库 并发控制(2)死锁和意向锁_第8张图片

 三种意向锁 所谓意向锁就是不在申请锁本身的地方设置锁 而是为他的后裔设置锁,

数据库 并发控制(2)死锁和意向锁_第9张图片

数据库 并发控制(2)死锁和意向锁_第10张图片

数据库 并发控制(2)死锁和意向锁_第11张图片

数据库 并发控制(2)死锁和意向锁_第12张图片

数据库 并发控制(2)死锁和意向锁_第13张图片

数据库 并发控制(2)死锁和意向锁_第14张图片

你可能感兴趣的:(数据库系统,数据库)