批量更新方法会造成mysql死锁吗

 我来答
通路快建电子
2017-04-21 · TA获得超过8656个赞
知道小有建树答主
回答量:2574
采纳率:86%
帮助的人:255万
展开全部
这个代码,只要条件满足,肯定会死锁。
如果有2个线程同时做批量更新,
第一个线程更新了id=1的数据,
第二个线程更新了id=2的数据。
这个时候,第一个线程准备更新id=2的数据,但线程2所持连接未提交,无法取得数据库中该id=2的行锁。
同时第二个线程准备更新id=1的数据,也因为无法取得id=1的行锁,就造成了死锁。
解决办法的就是:如果更新条件的,比如说是主键,则根据主键排序之后批量做更新。
如果更新条件不是主键,可以那么单线程处理。
也可以通过单条语句执行来避免死锁。
不过,不使用批量性能太低了,你还是需要结合你的业务来调整代码避免死锁
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式