首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL多个表锁

MySQL多个表锁
EN

Stack Overflow用户
提问于 2013-02-08 20:37:26
回答 2查看 10.3K关注 0票数 9

我对MySQL表锁有一点好奇。

假设我想锁定两个表。我执行以下命令:

代码语言:javascript
复制
LOCK TABLES table1 WRITE, table2 WRITE

然后,我通过执行以下命令检查这些表是否确实已被锁定:

代码语言:javascript
复制
SHOW OPEN TABLES IN mydatabase WHERE In_use > 0

我已经注意到,如果我依次运行两个lock命令,例如:

代码语言:javascript
复制
LOCK TABLES table1 WRITE
LOCK TABLES table2 WRITE

然后使用相同的命令检查哪些表被锁定,只有table2被标记为已锁定。为何会这样呢?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-09 00:24:44

LOCK TABLES不是事务安全的,它会在尝试锁定表之前隐式提交任何活动事务。

因此,在第一种情况下,您有一个事务,它锁定了两个表,而在第二种情况下,因为LOCK TABLES table1 WRITE已经提交,所以只有一个表被锁定

票数 10
EN

Stack Overflow用户

发布于 2015-11-20 07:09:58

lock tables将首先解锁当前会话锁定的所有表,然后再执行指定的锁定。因此,对锁定表2的调用是解锁表1。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14772762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档