我正在尝试确定我正在运行的查询是否锁定了它正在运行的表。
首先,我可能会稍微误解锁定背后的含义或一些细微差别。我最感兴趣的是这个查询是否会阻止其他读/写操作,以便在运行此查询时我的应用程序的其他部分会中断。
例如,假设该查询适用于电子商务应用中的订单表。我想避免锁定订单表,以防止订单被放置。
我已经阅读了这个答案,其中显示了如何获取基于In_use
列“锁定”的表列表:
https://stackoverflow.com/a/3230723/1117286
我已经确认,当我的查询正在运行时,In_use
确实会从0
更改为1
。 Name_locked
列仍保留在0
- 不确定这意味着什么。
最重要的是,我在本地开发环境中测试了SELECT
,INSERT
和UPDATE
,在查询运行时 表被“锁定”,所有三个都已成功完成。
这是否表示该表正在使用但实际上并未锁定?
答案 0 :(得分:0)
在MySQL 5.7中的performance_schema中可以看到表上的锁定
http://dev.mysql.com/doc/refman/5.7/en/metadata-locks-table.html