我有一张桌子A:
create table A(id int(11) auto_increment primary key, name varchar(255));
和 我有很多线程正在同时执行以下两个事务:
TRANSACTION 1:
SELECT id, name FROM A (SQL1)
SELECT id, name FROM A WHERE id > ? LOCK IN SHARE MODE (SQL2)
TRANSACTION 2:
INSERT INTO A(name) VALUES (?) (SQL3)
我找到了一个停滞不前的东西:
有时,并非总是如此,SQL2的结果会遗漏某些行
例如:
SQL1的结果是:
(1, "a")
(2, "b")
(3, "c")
但SQL2的结果是:
(1, "a")
(2, "b")
它看不到(3," c"),没有其他SQL可以删除表格的行;
为什么?
我的mysqld版本是5.6.22,引擎是InnoDB