mysql死锁

1.死锁发生的条件
互斥条件:一个资源每次只能被一个进程使用;
请求与保持条件:一个进程因请求资源而阻塞时,对已得到的资源保持不放;
不剥夺条件:进程已得到的资源,在末使用完以前,不能强行剥夺;
循环等待条件:若干进程之间造成一种头尾相接的循环等待资源关系。数据库

2.缘由session

死锁的关键在于:两个(或以上)的Session加锁的顺序不一致。
那么对应的解决死锁问题的关键就是:让不一样的session加锁有次序并发

3.结果性能

发生死锁后,InnoDB通常都能自动检测到,并使一个事务释放锁并回退,另外一个事务得到锁,继续完成事务。但在涉及外部锁,或涉及表锁的状况下,InnoDB并不能彻底自动检测到死锁,这须要经过设置锁等待超时参数 innodb_lock_wait_timeout来解决。须要说明的是,这个参数并非只用来解决死锁问题,在并发访问比较高的状况下,若是大量事务因没法当即得到所需的锁而挂起,会占用大量计算机资源,形成严重性能问题,甚至拖跨数据库。咱们经过设置合适的锁等待超时阈值,能够避免这种状况发生。进程

相关文章
相关标签/搜索