暂无图片
MySQL如何避免死锁?
我来答
分享
2023-05-25
MySQL如何避免死锁?

MySQL如何避免死锁?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
晴天

避免死锁应注意以下几点:

1)以固定的顺序访问表和行。比如两个任务批量更新的情形,简单方法是对id列表先排序,后执行,这样就避免了交叉等待锁的情形;又比如将两个事务的SQL顺序调整为一致,也能避免死锁。

2)大事务拆小。大事务更倾向于死锁,如果业务允许,将大事务拆小。

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

4)降低隔离级别。如果业务允许,将隔离级别调低也是较好的选择,比如将隔离级别从repeatable-read调整为read-committed,可以避免很多因为gap锁造成的死锁。

5)为表添加合理的索引。可以看到如果不添加索引将会为表的每一行记录添加锁,死锁的概率将大大增加。

暂无图片 评论
暂无图片 有用 2
暂无图片
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏