首页/数据/SQL 速查/SHOW FULL PROCESSLIST 定位运行中查询
性能与执行计划72 条

SHOW FULL PROCESSLIST 定位运行中查询

实时查看连接正在执行什么:结合 Time、State 与 Info 列找卡住的语句;输出只是当前时刻快照,需要多次观察。

SQL 速查数据更新于 2026-10-13

看当前在跑什么语句

实例变慢时第一步通常是看此刻有哪些连接、分别在执行什么。这类查询给出的是一个瞬时快照:连接标识、已持续秒数、当前状态、正在执行的语句。诊断的关键在状态列,它直接指出等待类型——是在读数据、在等元数据锁还是在等行锁。单次查看容易错过一瞬间的状态,规律性地连续观察几次比看一次更可靠。

基本信息

适用平台MySQL 8.0
查看方式专用语句或查询元数据表,后者可加过滤条件
关键列连接标识、用户、持续秒数、状态、正在执行的语句
快照特性只反映当前时刻,需要多次观察
终止手段终止单条语句与断开整个连接是两种操作

典型使用场景

  • 实例响应变慢:找出执行时间异常长的语句
  • 定位元数据锁等待:结构变更被长事务挡住
  • 处理跑飞的查询:确认后终止单条语句
  • 连接数异常升高:查看哪些连接长期空闲
  • 排查连接池与业务的连接泄漏

查看与处理

查看与处理
-- 完整列出当前连接与正在执行的语句
SHOW FULL PROCESSLIST;

-- 过滤出运行时间较长的语句,便于排序观察
SELECT id, user, time, state, LEFT(info, 100) AS query
FROM information_schema.processlist
WHERE command <> 'Sleep' AND time > 5
ORDER BY time DESC;

-- 终止单条语句,保留连接
KILL QUERY 12345;

-- 断开整个连接(连接池场景要评估重连影响)
KILL 12345;

-- 连续观察几次,确认语句是否一直卡在同一状态
-- 只跑一次看到的是快照,容易错过瞬时状态

关键列读法

列含义异常表现
连接标识连接的唯一编号终止操作需要它
持续秒数当前状态已保持的时间空闲连接同样在增长,需按命令类型过滤
状态列正在做什么或等待什么出现等待元数据锁或等待行锁
语句列正在执行的语句片段需要权限才能看到完整内容
命令类型空闲或正在执行大量空闲连接说明连接池配置偏大
等待元数据锁是结构变更的经典卡点:一条长事务持有该表的元数据,后续的加列、加索引语句就会一直等待。处理顺序是先找到持有者,而不是反复重试变更语句。
终止语句要评估代价:大事务被中止后回滚同样耗时,期间会继续占用资源。终止整个连接还会让连接池重建连接,瞬时压力可能不降反升。

易错点

  • 把持续秒数当成语句总耗时:空闲连接的时间同样在增长,必须先按命令类型过滤
  • 直接终止长事务:回滚过程同样耗时,资源占用不会立刻释放
  • 只看一次快照就下结论:瞬间出现的状态可能被错过,应连续观察几次
  • 等待元数据锁时反复重试变更语句,阻塞链越积越长,应先处理持锁事务
  • 权限不足导致语句列看不到内容,误判为没有异常

数据来源与参考

  • MySQL 8.0 Reference Manual §13.7.8.5 SHOW PROCESSLIST
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌