当我在桌子上选择*时,选择*在INNODB表上,表是否被锁定隐含?这是否意味着在MySQL返回结果集的过程中,我无法在表上发布更新语句?
根据我的理解,整个表将被锁定在共享模式,直到从服务器返回结果集。只有这样才能执行更新命令。
答案 0 :(得分:2)
InnoDB使用名为Multi-version concurrency control的功能。
不需要在共享模式下锁定,因为MVCC
将保留SELECT
语句的行的早期版本,以便能够在需要时读取。
所以答案是' no',运行SELECT
语句不需要在更新时锁定任何行。也就是说,除非它是SELECT
之类的特殊SELECT .. FOR UPDATE
语句。