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