有吗?
SELECT COUNT(*) FROM parent WHERE NAME = 'Jones' LOCK IN SHARE MODE;锁行的方式与
SELECT * FROM parent WHERE NAME = 'Jones' LOCK IN SHARE MODE;发布于 2015-02-22 14:34:38
lock in share mode的文档指定:
SELECT ... LOCK IN SHARE MODE在读取的任何行上设置共享模式锁。其他会话可以读取行,但在事务提交之前不能修改它们。如果这些行中的任何一行被尚未提交的另一个事务更改,则您的查询将一直等到该事务结束,然后使用最新的值。
这将基于事务读取的行。这两个查询通常读取相同的行。
但是,如果parent(name)上有索引,则查询是不等效的。count(*)查询只使用索引就可以解决这个问题,而select *则需要读取数据页。我假设MySQL会在只有索引的查询期间锁定底层行,但我不能100%确定。
https://stackoverflow.com/questions/28658924
复制相似问题