首页 > 数据库技术 > 详细

工作过程中遇到的多线程下mysql死锁

时间:2021-05-17 13:45:39      阅读:14      评论:0      收藏:0      [点我收藏+]


UPDATE tableA
JOIN (SELECT vala a, valb b, valc c, vald d from tableB) x ON tableA.a = x.a
SET
 tableA.b = x.b,
 tableA.c = x.c,
 tableA.d = x.d;
此语句执行时如果tableB正在被update(或者insert),则死锁。解决方案,先select,拿到结果后再update,将两个过程解耦。

INSERT INTO tableA (a, b, c, d)
(
SELECT
    tableB.a,
    tableB.b,
    tableC.c,
    tableC.d
FROM
    tableB,
    tableC
WHERE
    tableB.e = tableC.e
AND tableB.e = someValue
)
;
此语句执行时如果tableB或者tableC正在被insert(或update),则死锁,解决方案,先select,然后再进行insert,将两个过程解耦。

工作过程中遇到的多线程下mysql死锁

原文:https://www.cnblogs.com/luckyfunner/p/14775855.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!