mysql 禁止使用 on duplicate key update 吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
meteor957
0D
V2EX    程序员

mysql 禁止使用 on duplicate key update 吗

  •  
  •   meteor957 2020-05-04 16:05:54 +08:00 3926 次点击
    这是一个创建于 2073 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在定时任务中执行 on duplicate key update 产生死锁了,查了一些资料很多建议不使用这个语句,还不如先 select 出来再判断是 update 还是 insert 。

    既然如此 这个语句还有啥用... 大佬们还有其它解决方案吗

    11 条回复    2020-12-12 11:38:58 +08:00
    GBdG6clg2Jy17ua5
        1
    GBdG6clg2Jy17ua5  
       2020-05-04 17:03:42 +08:00 via iPhone
    该死锁,update 的时候一样死锁
    msg7086
        2
    msg7086  
       2020-05-04 17:11:21 +08:00
    有啥用?单线程的时候不就有用了吗。
    meteor957
        3
    meteor957  
    OP
       2020-05-04 17:41:43 +08:00
    @msg7086 有道理
    meteor957
       
    meteor957  
    OP
       2020-05-04 17:44:29 +08:00
    @angryfish update 只加 X 锁也会出现这种情况吗,该如何避免呢
    xhinliang
        5
    xhinliang  
       2020-05-04 18:02:44 +08:00
    说下我的几个解决方案:
    1. insert ignore,判断返回值,如果 affected row > 0 则手动 update
    2. 隔离级别降低到 rc
    meteor957
        6
    meteor957  
    OP
       2020-05-04 18:21:42 +08:00
    @xhinliang 感谢。暂时加了一个状态来判断定时器的 sql 是否执行完毕,避免并发去 update...
    xhinliang
        7
    xhinliang  
       2020-05-04 20:25:11 +08:00
    @angryfish 不是很懂你在说什么,我觉得 update 的时候不会死锁。
    darylc
        8
    darylc  
       2020-05-04 23:49:54 +08:00 via Android
    是的,确实是会遇到这个问题的,写入量比较大并且还是并发是吧
    gaius
        9
    gaius  
       2020-05-05 16:38:40 +08:00 via Android
    两个事务获取锁顺序不同就有几率死锁,解决方法要么确保事务加锁顺序相同,不能确保可以回滚后重试
    vison09
        10
    vison09  
       2020-12-12 10:57:07 +08:00
    @angryfish 你错了,update 是不会死锁的,on duplicate key update 这个语句确实在某些场景是会产生死锁的
    GBdG6clg2Jy17ua5
        11
    GBdG6clg2Jy17ua5  
       2020-12-12 11:38:58 +08:00 via iPhone
    @vison09 会死锁。你可以试试。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1052 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 22:52 PVG 06:52 LAX 14:52 JFK 17:52
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86