MySQL更新:锁定等待超时。但是,锁具有桌子尺寸

时间:2017-12-26 15:34:07

标签: mysql database

我遇到了MySQL事务锁定问题,但我不知道为什么。

这是DDL:

CREATE TABLE test.tmp
(
 id INT         NOT NULL PRIMARY KEY,
 c2 VARCHAR(10) NULL,
 c3 INT         NOT NULL,
 c4 INT         NOT NULL
)ENGINE = InnoDB;
CREATE INDEX tmp_c2_index ON tmp (c2);

表数据:

enter image description here

TRX1:

BEGIN ;
UPDATE test.tmp SET c3=100 WHERE c2='b';----(1)

TRX2:

BEGIN;
UPDATE test.tmp SET c3=50 WHERE c2='a';----(2)

当执行trx2 sql(2)时,如果用c2 ='a'减少一些记录(例如用c2 ='a'删除3条记录)则没有锁定等待;如果使用c2 ='a'添加更多记录,则会发生锁定等待。这太奇怪了!

当发生锁定等待时,我会查询锁定信息。

select * from information_schema.innodb_locks;

enter image description here

任何人都可以帮助我,谢谢。

0 个答案:

没有答案