<p>通过SHOW PROCEsslIST命令可查看mysql当前运行的进程,列出所有线程及其状态,帮助排查慢查询和连接阻塞问题;使用SHOW FULL PROCESSLIST可显示完整的sql语句;各输出字段包括Id、User、Host、db、Command、Time、State和Info,其中Id可用于终止连接;此外,可通过select * FROM information_schema.PROCESSLIST执行更灵活的查询筛选,如定位执行时间过长的SQL;该方法常用于发现慢查询、检查锁等待、识别空闲连接及异常来源,是监控mysql连接状态的核心手段。</p>

在MySQL中查看当前运行的进程,主要通过SHOW PROCESSLIST命令来实现。这个命令可以列出当前所有正在执行的线程(连接)及其状态,帮助排查慢查询、连接阻塞等问题。
使用 SHOW PROCESSLIST 查看进程
基本语法:
SHOW PROCESSLIST;
该命令显示当前用户有权限查看的线程信息。如果拥有PROCESS权限,可以看到所有线程;否则只能看到自己发起的连接。
完整语法(显示更详细信息):
SHOW FULL PROCESSLIST;
与普通版本的区别是,FULL版本会显示完整的SQL语句(不截断),便于分析长查询。
输出字段说明
执行命令后返回的结果通常包含以下列:
- Id:线程ID,可用于终止某个连接(
KILL [Id]) - User:执行该线程的用户名
- Host:客户端的主机名或IP地址及端口
- db:当前使用的数据库名(可能为空)
- Command:线程正在执行的命令类型,如
Query、Sleep等 - Time:该状态持续的时间(秒)
- State:线程当前的操作状态,例如
Sending data、Locked等 - Info:正在执行的SQL语句(
SHOW PROCESSLIST可能截断,FULL版本不截断)
从 information_schema 查看进程信息
MySQL还将进程信息保存在information_schema.PROCESSLIST表中,可通过标准SQL查询访问:
SELECT * FROM information_schema.PROCESSLIST;
这种方式便于做条件筛选,比如查找运行时间超过一定阈值的查询:
SELECT * FROM information_schema.PROCESSLIST WHERE TIME > 60 AND COMMAND = ‘Query’;
常见应用场景
- 发现长时间运行的查询,优化慢SQL
- 识别处于
Locked或Waiting状态的进程 - 检查是否有大量空闲连接(
Sleep状态)占用资源 - 定位异常连接来源(通过Host和User)
基本上就这些。掌握SHOW PROCESSLIST和information_schema.PROCESSLIST的使用,能有效监控MySQL运行时的连接状况。