
在定时任务中执行 on duplicate key update 产生死锁了,查了一些资料很多建议不使用这个语句,还不如先 select 出来再判断是 update 还是 insert 。
既然如此 这个语句还有啥用... 大佬们还有其它解决方案吗
1 GBdG6clg2Jy17ua5 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 darylc 2020-05-04 23:49:54 +08:00 via Android 是的,确实是会遇到这个问题的,写入量比较大并且还是并发是吧 |
9 gaius 2020-05-05 16:38:40 +08:00 via Android 两个事务获取锁顺序不同就有几率死锁,解决方法要么确保事务加锁顺序相同,不能确保可以回滚后重试 |
10 vison09 2020-12-12 10:57:07 +08:00 @angryfish 你错了,update 是不会死锁的,on duplicate key update 这个语句确实在某些场景是会产生死锁的 |
11 GBdG6clg2Jy17ua5 2020-12-12 11:38:58 +08:00 via iPhone @vison09 会死锁。你可以试试。 |