1. 用途

用来查看当前线程处理情况,可以查看总共有多少链接数,哪些线程有问题,执行耗时长等,然后可以通过线程id把有问题的线程 kill 掉

kill xxxx;

进程很多的时候,可能需要批量杀死

select concat('kill ', id, ';') from information_schema.processlist where command != 'Sleep' and time > 60 order by time desc 

	https://dev.mysql.com/doc/refman/5.7/en/kill.html
	https://dev.mysql.com/doc/refman/5.7/en/show-processlist.html

2. 查看

有两个方法查看

直接执行命令:

show processlist;
show full processlist;
show full processlist\G;

通过sql查询

select id, db, user, host, command, time, state, info from information_schema.processlist order by time desc

3. 含义

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