关于INNODB锁定的困惑

时间:2014-04-22 11:46:31

标签: mysql innodb locks

当我在桌子上选择*时,选择*在INNODB表上,表是否被锁定隐含?这是否意味着在MySQL返回结果集的过程中,我无法在表上发布更新语句?

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

1 个答案:

答案 0 :(得分:2)

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

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

所以答案是' no',运行SELECT语句不需要在更新时锁定任何行。也就是说,除非它是SELECT之类的特殊SELECT .. FOR UPDATE语句。