你怎么知道MySQL表是否被锁定?

时间:2014-09-18 13:06:29

标签: mysql locking

我正在尝试确定我正在运行的查询是否锁定了它正在运行的表。

首先,我可能会稍微误解锁定背后的含义或一些细微差别。我最感兴趣的是这个查询是否会阻止其他读/写操作,以便在运行此查询时我的应用程序的其他部分会中断。

例如,假设该查询适用于电子商务应用中的订单表。我想避免锁定订单表,以防止订单被放置。

我已经阅读了这个答案,其中显示了如何获取基于In_use列“锁定”的表列表: https://stackoverflow.com/a/3230723/1117286

我已经确认,当我的查询正在运行时,In_use确实会从0更改为1Name_locked列仍保留在0 - 不确定这意味着什么。

最重要的是,我在本地开发环境中测试了SELECTINSERTUPDATE,在查询运行时 表被“锁定”,所有三个都已成功完成。

这是否表示该表正在使用但实际上并未锁定?

1 个答案:

答案 0 :(得分:0)

在MySQL 5.7中的performance_schema中可以看到表上的锁定

http://dev.mysql.com/doc/refman/5.7/en/metadata-locks-table.html