在MySQL中锁定表

Salifkeita

使用lock tables table_name READ ;之后:mysql不允许我从其他表读取数据,说:表'other_table'没有被LOCK TABLES锁定,有人可以解释一下当您使用READ选项锁定表时实际上会发生什么...

佩恩·米勒(Payne Miller)

MySQL文档-锁表

读取[本地]锁:

持有锁的会话可以读取表(但不能写入表)。

多个会话可以同时获取该表的READ锁。

其他会话可以在不显式获取READ锁的情况下读取表。

LOCAL修饰符使其他会话可以在保持锁的同时执行无冲突的INSERT语句(并发插入)。(请参见第9.11.3节“并发插入”。)但是,如果您要在持有锁的同时使用服务器外部的进程来操作数据库,则不能使用READ LOCAL。对于InnoDB表,READ LOCAL与READ相同。

从我的理解,读锁定会话锁是说:“嘿!我会从这个(或这些)表(S)来读取,并且只有这些表(或多个)本次会议。不过,我不打算能写给它。” 重要的是要记住,其他会话可以从同一表读取,无需获取READ锁。

因此,要回答您的问题,必须在声明READ锁时指定要从中读取的每个表。在该会话中,您将无法读取任何其他表。完成会话后,请确保解锁用户。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章