mysql: show full processlist 详解

时间:2019-12-03 11:31:22   收藏:0   阅读:69

show full processlist 是显示用户正在运行的线程,需要注意的是,除了 root 用户能看到所有正在运行的线程外,其他用户都只能看到自己正在运行的线程,看不到其它用户正在运行的线程。除非单独个这个用户赋予了PROCESS 权限。

 

 

 

 技术分享图片

 

 

 show processlist 显示的信息都是来自MySQL系统库 information_schema 中的 processlist 表。所以使用下面的查询语句可以获得相同的结果:

select * from information_schema.processlist

 

了解这些基本信息后,下面我们看看查询出来的结果都是什么意思。

 

下面我们单独看一下 Command 的值:

 

如果有歧义可以查看官方文档:

下面我们看看 State 的值有哪些:

官方文档关于 State 的解释: https://dev.mysql.com/doc/refman/5.6/en/general-thread-states.html

 

下面是常用到的SQL,记录下来便于使用。

按客户端 IP 分组,看哪个客户端的链接数最多

select client_ip,count(client_ip) as client_num from (select substring_index(host,: ,1) as client_ip from processlist ) as connect_info group by client_ip order by client_num desc;

查看正在执行的线程,并按 Time 倒排序,看看有没有执行时间特别长的线程:

select * from information_schema.processlist where Command != Sleep order by Time desc;

找出所有执行时间超过 5 分钟的线程,拼凑出 kill 语句,方便后面查杀:

select concat(kill , id, ;) from information_schema.processlist where Command != Sleep and Time > 300 order by Time desc;

 

原文:https://www.cnblogs.com/pyweb/p/11974921.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!