首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >锁在共享模式中是否与COUNT一起工作?

锁在共享模式中是否与COUNT一起工作?
EN

Stack Overflow用户
提问于 2015-02-22 14:25:58
回答 1查看 135关注 0票数 1

有吗?

代码语言:javascript
复制
SELECT COUNT(*) FROM parent WHERE NAME = 'Jones' LOCK IN SHARE MODE;

锁行的方式与

代码语言:javascript
复制
SELECT * FROM parent WHERE NAME = 'Jones' LOCK IN SHARE MODE;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-22 14:34:38

lock in share mode的文档指定:

SELECT ... LOCK IN SHARE MODE在读取的任何行上设置共享模式锁。其他会话可以读取行,但在事务提交之前不能修改它们。如果这些行中的任何一行被尚未提交的另一个事务更改,则您的查询将一直等到该事务结束,然后使用最新的值。

这将基于事务读取的行。这两个查询通常读取相同的行。

但是,如果parent(name)上有索引,则查询是不等效的。count(*)查询只使用索引就可以解决这个问题,而select *则需要读取数据页。我假设MySQL会在只有索引的查询期间锁定底层行,但我不能100%确定。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28658924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档