`SHOW PROCESSLIST;` 返回列详解(含义 + 单位)

发布于:2025-08-14 ⋅ 阅读:(25) ⋅ 点赞:(0)
列名 含义 单位/格式 示例值
Id 连接的唯一标识符(线程ID) 整数(无单位) 12345
User 执行该连接操作的 MySQL 用户名 字符串(无单位) 'app_user''root'
Host 客户端来源地址(格式:[IP或主机名]:[客户端端口] 字符串:
- TCP/IP 连接:IP:端口(如 192.168.1.10:5532
- Unix Socket 连接:localhost(无端口)
'192.168.1.100:51234'
db 当前连接默认使用的数据库 字符串(NULL 表示未选择数据库) 'orders_db'NULL
Command 当前连接正在执行的命令类型 字符串(常见值):
- Query:执行SQL
- Sleep:空闲连接
- Binlog Dump:主从复制
- Connect:连接中
'Query''Sleep'
Time 已执行/空闲时间
- 非 Sleep:当前命令运行时间
- Sleep:空闲时间
秒(seconds) 15(执行中)、350(空闲中)
State 连接当前状态(操作描述) 字符串(常见值):
- Sending data:处理/发送数据
- Locked:等待锁
- Writing to net:写入网络
- NULL:空闲
'Sending data'NULL
Info 正在执行的 SQL 语句(前100字符左右) 字符串(NULL 表示未执行语句) 'SELECT * FROM orders...'

KILL 命令详解

用于终止 MySQL 连接或查询。

语法:
KILL [CONNECTION | QUERY] processlist_id;
参数说明:
参数 作用 示例
无参数CONNECTION 终止整个连接(断开客户端,回滚未提交事务) KILL 123;
QUERY 仅终止当前查询(连接保持,可继续执行新命令) KILL QUERY 456;
processlist_id 要终止的线程ID(来自 SHOW PROCESSLISTId 列) 123456
使用场景:
  1. 终止异常查询
    KILL QUERY 789;  -- 停止耗时查询,连接不中断
    
  2. 踢出危险连接
    KILL 101;  -- 强制断开用户连接(权限变更后立即生效)
    
  3. 清理空闲连接
    KILL 202;  -- 断开长时间空闲的连接(配合 `Time` 列判断)
    
权限要求:
  • SUPER 权限(MySQL 5.7)或 CONNECTION_ADMIN 权限(MySQL 8.0+)才能终止其他用户的连接。
注意事项:
  1. 终止大事务可能导致回滚耗时较长(检查 State 是否为 Rolling back)。
  2. 系统关键线程(如复制线程 Binlog Dump)被终止可能导致服务异常。
  3. 无法终止自己的当前连接(需另开会话操作)。

操作流程示例

  1. 查看活动连接
    SHOW FULL PROCESSLIST;  -- 显示完整SQL(Info列)
    
  2. 定位问题连接
    • Time 值 + Query 命令 → 长时间运行查询
    • Time 值 + Sleep 命令 → 空闲连接
    • 危险SQL(如 DROP TABLE) → 立即终止
  3. 执行终止操作
    KILL 303;       -- 终止整个连接
    KILL QUERY 404; -- 仅终止查询
    

📌 提示:生产环境操作前务必确认连接用途,避免误杀重要任务!


网站公告

今日签到

点亮在社区的每一天
去签到