当我在一个InnoDB表运行“select * from表”,并表被锁定含蓄? 这是否意味着在MySQL的需要返回结果集的时候,我不能发出对表的更新语句?
从我所了解,直到结果集是从服务器返回的整个表将被锁定在共享模式。 只有这样的更新命令来执行。
当我在一个InnoDB表运行“select * from表”,并表被锁定含蓄? 这是否意味着在MySQL的需要返回结果集的时候,我不能发出对表的更新语句?
从我所了解,直到结果集是从服务器返回的整个表将被锁定在共享模式。 只有这样的更新命令来执行。
InnoDB使用一个称为多版本并发控制 。
在共享模式下锁定是不需要的,因为MVCC
将保留早期版本的行为您的SELECT
语句可以在需要时阅读。
因此,答案是“不”,运行SELECT
语句将不需要锁定任何行,同时更新。 也就是说,除非它是一个特殊的SELECT
LIKE语句SELECT .. FOR UPDATE
。