mysql 并发修改问题,批量修改问题,可能产生死锁问题万分感谢

问题描述
需要批量更新一个字段值,updatetablesetxxx=xxx+awherea=?andb=?ab有索引,还有另外一个主键索引会有并发的情况,可以不考虑事务回滚
相关代码
//请把代码文本粘贴到下方(请勿用图片代替代码)publicvoidtest(Listlist){
for(Objecto:list){
updatetablesetxxx=xxx+awherea=?andb=?
}
}
这个方法在不加事务注解情况下,在并发执行时,xxx字段,在我理解是不会有脏数据的吧?
但是有可能会跟其他update语句产生死锁对吗?
慕村9548890
浏览 402回答 2
2回答

小唯快跑啊

updatetablesetxxx=xxx+awherea=?andb=?字段a、b都有索引的话,这个更新不会锁整张表(只会锁住更新的那一行数据),产生死锁需要有静态条件,比如:操作A:updatetableasetxxx=xxx+awherea=1andb=1updatetablebsetxxx=xxx+a...操作B:updatetablebsetxxx=xxx+a...updatetableasetxxx=xxx+awherea=1andb=1这时,就有可能产生死锁了...

慕妹3242003

字段a、b都有索引,更新时候通过索引已经明确到要加锁的范围了,不会有死锁的。假如你还有另外一个更新语句,是表锁的话,那可能就会出现死锁了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript