MySQL中show processlist详细解释

0.概况

MySQL执行SHOW PROCESSLIST命令后,显示的各个字段的含义如下所示:

说明
id 一个标识,要kill一个语句的时候有用。
user 显示当前用户
host 这条语句是从那个服务器的哪个端口上发出的,可以用来追踪出问题语句的用户
db 当前连接连接使用哪个数据库
command 显示当前连接的执行的命令,一般就是休眠(sleep),查询(query),连接(connect)
time 状态持续的时间,单位是秒。
state 当前连接的sql语句的状态,很重要的列
info sql语句。

1.详细说明

id

一个标识,要kill一个语句的时候有用。

user

显示当前用户

host

这条语句是从那个服务器的哪个端口上发出的,可以用来追踪出问题语句的用户

db

当前连接连接使用哪个数据库

command (重要)

共有以下几种状态

time

状态持续的时间,单位是秒

state (重要)

info

SQL语句

实际DBA工作中,如果要更明细的信息或分类,一般用以下命令

## 查看当前正在执行的SQL数,超过10个,就应该要重视了,可能有问题
Select count(*) from information_schema.processlist where info is not null;

#查看正在执行的SQL详细
Select * from information_schema.processlist where info is not null;

#查看正在执行的SQL详细大于50秒
Select id,time,db from information_schema.processlist where info is not null and time >50 order by time desc;

#按主机/db汇总
Select   User,Host,db,count(*) AS COUNTS
from information_schema.processlist 
group by  User,Host,db

#按主机/ip汇总
SELECT USER,DB,SUBSTRING_INDEX(HOST,':',1) AS IP,COUNT(1) AS Total FROM INFORMATION_SCHEMA.PROCESSLIST
where user not in ('replication','system user') AND HOST NOT LIKE '127.0.0.1%'
GROUP BY IP,DB,USER ORDER BY Total DESC;

#指定db的ip
SELECT USER,DB,SUBSTRING_INDEX(HOST,':',1) AS IP,COUNT(1) AS Total FROM INFORMATION_SCHEMA.PROCESSLIST
where db='abc'
GROUP BY IP,DB,USER ORDER BY Total DESC;

#按来源Ip汇总
SELECT  SUBSTRING_INDEX(HOST,':',1) AS IP,COUNT(1) AS Total FROM INFORMATION_SCHEMA.PROCESSLIST
whereuser not in ('replication','system user') AND HOST NOT LIKE '127.0.0.1%'
GROUP BY IP ORDER BY Total DESC;
>> Home

51ak

2022/02/27

Categories: mysql Tags: 知识

《数据库工作笔记》公众号
扫描上面的二维码,关注我的《数据库工作笔记》公众号