【问题标题】:Confusion regarding INNODB locking关于 INNODB 锁定的困惑
【发布时间】:2014-06-06 18:26:47
【问题描述】:

当我在 INNODB 表上运行“Select * from table”时,该表是否被隐式锁定?这是否意味着在 MySQL 返回结果集期间,我无法对表发出更新语句?

据我了解,整个表将被锁定在共享模式,直到从服务器返回结果集。只有这样才能执行更新命令。

【问题讨论】:

  • 你尝试的时候发生了什么?
  • 没试过。只是为了知识而询问。
  • 已编辑问题。

标签: mysql innodb locks


【解决方案1】:

InnoDB 使用一个名为 Multi-version concurrency control 的功能。

不需要在共享模式下锁定,因为MVCC 将保留该行的早期版本,以便您的SELECT 语句在需要时能够读取。

所以答案是否定的,运行SELECT 语句将不需要在更新时锁定任何行。也就是说,除非它是一个特殊的SELECT 语句,如SELECT .. FOR UPDATE

【讨论】:

  • 感谢您的澄清。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-17
  • 2020-03-06
  • 2016-03-16
  • 2013-07-27
  • 1970-01-01
  • 2012-09-20
  • 1970-01-01
相关资源
最近更新 更多