跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • mysql 禁止使用 on duplicate key update 吗
未分類
27 3 月 2020

mysql 禁止使用 on duplicate key update 吗

mysql 禁止使用 on duplicate key update 吗

資深大佬 : meteor957 12

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

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

大佬有話說 (9)

  • 資深大佬 : angryfish

    该死锁,update 的时候一样死锁

  • 資深大佬 : msg7086

    有啥用?单线程的时候不就有用了吗。

  • 主 資深大佬 : meteor957

    @msg7086 有道理

  • 主 資深大佬 : meteor957

    @angryfish update 只加 X 锁也会出现这种情况吗,该如何避免呢

  • 資深大佬 : xhinliang

    说下我的几个解决方案:
    1. insert ignore,判断返回值,如果 affected row > 0 则手动 update
    2. 隔离级别降低到 rc

  • 主 資深大佬 : meteor957

    @xhinliang 感谢。暂时加了一个状态来判断定时器的 sql 是否执行完毕,避免并发去 update…

  • 資深大佬 : xhinliang

    @angryfish 不是很懂你在说什么,我觉得 update 的时候不会死锁。

  • 資深大佬 : susecjh

    是的,确实是会遇到这个问题的,写入量比较大并且还是并发是吧

  • 資深大佬 : gaius

    两个事务获取锁顺序不同就有几率死锁,解决方法要么确保事务加锁顺序相同,不能确保可以回滚后重试

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具