【发布时间】:2016-05-27 22:37:47
【问题描述】:
SELECT ... LOCK IN SHARE MODE 在读取的任何行上设置共享模式锁。其他会话可以读取这些行,但在事务提交之前不能修改它们。如果其中任何行被另一个尚未提交的事务更改,您的查询将等待该事务结束,然后使用最新的值。
但是,一些实验表明它锁定的次数多于读取的行数。
CREATE TABLE example (a int);
START TRANSACTION;
SELECT a FROM example WHERE a = 0 LOCK IN SHARE MODE;
然后在另一个连接上
INSERT INTO example VALUES (1);
锁上后面的连接块。
似乎LOCK IN SHARE MODE 锁定的次数超过了“读取的任何行”。
LOCK IN SHARE MODE 锁定了什么究竟?
【问题讨论】:
标签: mysql concurrency locking row innodb