死锁
1.定义
两个或者多个事务,占用了一些资源,且请求其他的资源,只有请求到了其他的资源,才能释放所有的资源,但是请求的资源却被其他事务所占有.造成了死循环 .
死锁产生的条件:
互斥条件:指进程对所分配到的资源进行排它性使用.
请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放.
不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。
环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,P2,···,Pn}中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源。
2.数据库系统解决死锁问题的方法
死锁检测(返回一个错误)
死锁超时机制(将持有最少行级排他锁的事务进行回滚(会释放出来资源))–破坏不剥夺条件