You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计MySQL中SHOW OPEN TABLES结果行数及检查锁事务?

解决MySQL锁定查询统计及事务/锁检查问题

一、统计被锁定表的行数

SHOW OPEN TABLES属于MySQL专有语句,无法直接作为子查询嵌套使用。你可以改用INFORMATION_SCHEMA.OPEN_TABLES系统表实现统计(这是SHOW OPEN TABLES的底层数据源),语法如下:

SELECT COUNT(*) FROM INFORMATION_SCHEMA.OPEN_TABLES WHERE In_use > 0;

这条语句会直接返回当前被锁定(In_use > 0)的表的数量。

二、检查活跃事务与锁运行状态

1. 查看所有活跃事务

通过InnoDB事务系统表,可获取当前正在运行的事务详情,包括事务ID、执行时长、关联SQL等:

SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;

2. 查看锁等待关系

若存在锁阻塞,这条语句会展示等待锁的事务、被阻塞资源,以及持有锁的事务信息:

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;

3. 查看当前所有持有的锁

直接获取系统中存在的锁类型、关联表、行信息等:

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;

4. 筛选活跃进程(含锁定查询)

通过进程列表排查长时间运行的查询或锁定进程,排除休眠状态的进程:

SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND != 'Sleep';

也可使用SHOW FULL PROCESSLIST;查看完整的进程SQL语句。

内容的提问来源于stack exchange,提问作者ShivaPendem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 02:43:16