我遇到了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);
表数据:
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;
任何人都可以帮助我,谢谢。