page contents

什么是死锁?怎么解决?

轩辕小不懂 发布于 2021-06-25 15:15
阅读 542
收藏 0
分类:数据库
1127
Nen
Nen
- 程序员

死锁是指两个或多个事务在同一资源上相互占用,并请求锁定对方的资源,从而导致恶性循环的现象。

死锁有四个必要条件:互斥条件,请求和保持条件,环路等待条件,不剥夺条件。

解决死锁思路,一般就是切断环路,尽量避免并发形成环路。

如果不同程序会并发存取多个表,尽量约定以相同的顺序访问表,可以大大降低死锁机会。

在同一个事务中,尽可能做到一次锁定所需要的所有资源,减少死锁产生概率;

对于非常容易产生死锁的业务部分,可以尝试使用升级锁定颗粒度,通过表级锁定来减少死锁产生的概率;

如果业务处理不好可以用分布式事务锁或者使用乐观锁

死锁与索引密不可分,解决索引问题,需要合理优化你的索引,

请先 登录 后评论