在定时任务中执行 on duplicate key update 产生死锁了,查了一些资料很多建议不使用这个语句,还不如先 select 出来再判断是 update 还是 insert 。
既然如此 这个语句还有啥用... 大佬们还有其它解决方案吗
1
GBdG6clg2Jy17ua5 2020 年 5 月 4 日 via iPhone
该死锁,update 的时候一样死锁
|
2
msg7086 2020 年 5 月 4 日
有啥用?单线程的时候不就有用了吗。
|
5
xhinliang 2020 年 5 月 4 日
说下我的几个解决方案:
1. insert ignore,判断返回值,如果 affected row > 0 则手动 update 2. 隔离级别降低到 rc |
8
darylc 2020 年 5 月 4 日 via Android
是的,确实是会遇到这个问题的,写入量比较大并且还是并发是吧
|
9
gaius 2020 年 5 月 5 日 via Android
两个事务获取锁顺序不同就有几率死锁,解决方法要么确保事务加锁顺序相同,不能确保可以回滚后重试
|
11
GBdG6clg2Jy17ua5 2020 年 12 月 12 日 via iPhone
@vison09 会死锁。你可以试试。
|