在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运行时的连接状况。
