首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySql锁表阻塞逻辑

MySql锁表阻塞逻辑
EN

Database Administration用户
提问于 2015-07-06 11:04:27
回答 1查看 404关注 0票数 1

锁表的MySQL文档(5.5)指出:

假设我试图在一个查询中锁定table1table2,但是table2已经被锁定了。MySQL是会保持table1上的锁并阻塞,直到它可以锁定table2,还是只有当它可以在两个表上获得锁时才能锁定table1

如果这很重要,请假设InnoDB存储引擎。

我刚刚在同一页上找到了以下语句:

当会话已经获得写锁,并且正在等待为锁表列表中的下一个表获取锁时,所有其他会话都等待释放写锁。

这是否证实了MySQL在持有table1锁时会阻塞?如果是这样的话,是否有一种方法来查询MySQL,使其在失败的情况下立即返回,而不是在无法获取所有表锁时阻塞?

EN

回答 1

Database Administration用户

发布于 2015-07-06 21:31:54

除非您有非常特殊的需要,否则不要将LOCK TABLES与InnoDB结合使用。

相反,学习“事务”并使用BEGIN.COMMIT实现最需要的“锁定”。另见SELECT ... FOR UPDATE...

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

https://dba.stackexchange.com/questions/106049

复制
相关文章

相似问题

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