mysql show processlist 排查问题
一,命令概述
mysql show processlist ; 用来查看当前线程处理的情况
show full processlist 返回的结果是实时变化的,是对mysql连接执行的现场快照,所以用来处理突发事件将是非常有用的。
一般用到show processlist 和show full processlist 都是为了查看当前mysql是否有压力,都在跑什么语句,当前语句耗时多久了,有没有慢sql在执行之类的。
##有时候一个快照看不出来什么,频繁刷新一下
也可以通过navicate 工具的tool ->服务器监控下去勾选自己的masql去查看

Id:链接mysql 服务器线程的唯一标识,可以通过kill来终止此线程的链接。
User:当前线程链接数据库的用户
Host:显示这个语句是从哪个ip 的哪个端口上发出的。可用来追踪出问题语句的用户
db: 线程链接的数据库,如果没有则为null
Command: 显示当前连接的执行的命令,一般就是休眠或空闲(sleep),查询(query),连接(connect)
Time: 线程处在当前状态的时间,单位是秒
State:显示使用当前连接的sql语句的状态,很重要的列,后续会有所有的状态的描述,请注意,state只是语句执行中的某一个状态,一个 sql语句,已查询为例,可能需要经过copying to tmp table,Sorting result,Sending data等状态才可以完成
Info: 线程执行的sql语句,如果没有语句执行则为null。这个语句可以使客户端发来的执行语句也可以是内部执行的语句
由于command的状态大部分都是sleep对我们分析问题没有什么作用,所以我们可以通如下语句来排除sleep状态的线程;
select id, db, user, host, command, time, state, info
from information_schema.processlist
where command != 'Sleep'
order by time desc
这样就能过滤出来哪些正在干过的,然后按照消耗时间倒序展示,排在最前面的,极大可能就是有问题的链接然后查看info一列,就能看到对应的执行的什么sql了


浙公网安备 33010602011771号