死锁发生的四个必要条件是:
1.资源互斥使用。
2.多个进程保持一定的资源,但又请求新的资源。
3.资源不可被剥夺。
4.多个进程循环等待。
一般死锁的应对策略有:
1.死锁预防。如进程需要的所有资源,在一开始就全部申请好得到之后再开始执行。
2.死锁避免。如进程每次申请申请资源的时候,根据一定的算法,去看该请求可能不可能造成死锁,如果可能,就不给它分配该资源。
3.死锁处理。破坏四个必要条件的其中一个,比如kill掉一个进程。
4.死锁忽略。不管死锁,由用户自行处理,比如重启电脑。一般的系统其实都采取这种策略。
数据库什么时候会产生死锁?
当表进行了分区并且ALTERTABLE的LOCK_ESCALATION设置设为AUTO时也会发生死锁