【发布时间】:2018-08-25 14:58:01
【问题描述】:
我有两个表,每个表大约有 65-7000 万行,每个表大约 25 列。 几天前,我们在它上面运行了一个大更新查询,其中涉及到这两个表的连接。
类似这样的:
update A INNER JOIN B on a.some_fk=b.some_fk set A.field1=B.field1 where A.field1 is null;
这个查询占用了很大的锁,阻塞了很多查询,这里有一个有问题。
应用程序有两个服务器,都发送下面提到的相同查询
INSERT INTO A(X,Y,Z) VALUES(X,Y,Z)
但是这个查询一直给出 Lock wait timeout exceeded;尝试从其中一台机器重新启动事务,并在另一台机器上工作更多次。两台机器的成功配给比例为 1:100。
为什么会发生这种情况,为什么这是调用者的功能。 两台机器具有相同的配置、相同的连接数、相同的带宽等。
【问题讨论】:
标签: mysql database join locking