MySQL - PROCESSLIST
2020-10-13 本文已影响0人
HelloTech
- 查看MySQL当前的进程
一、使用方式:
> show processlist;
# 或者查看所有的进程
> show full processlist;
命令输出结果
1、如果有 SUPER 权限可以看到所有进程,否则只能看到当前用户自己发起的进程
2、输出的结果是实时变化的,是MySQL连接的执行快照
3、show processlist 输出的结果来自 information_schema.processlist 表
参数详解:
字段 | 说明 |
---|---|
Id | ID , 进程的唯一标记,可以用这个ID去kill掉一个客户端的连接,这个就是information_schema.processlist表的ID |
User | 当前用户 |
Host | 是有哪个客户端IP和端口发起的,在排查问题时可以知道是来自哪个客户端和端口 |
db | 当前执行的操作是在哪个库上执行的,如果没有指定库,该值为NULL |
Command | 该进程执行的命令,下表单独说明 |
Time | 该进程处于当前状态的时间(持续时间),单位秒 |
State | 进程的状态,跟command对应 |
Info | 这个一般记录的是执行的语句,默认输出一百个字符,如果需要全部输出,使用show full processlist |
Command
Command值 | 说明 |
---|---|
Sleep | 正在等待客户端向它发送执行语句 |
Query | 该进程正在执行一个语句 |
Binlog Dump | 主节点正在将二进制日志 ,同步到从节点 |
Change User | 正在执行一个 change-user 的操作 |
更多参数查看:
Close Stmt: 正在关闭一个Prepared Statement 对象
Connect: 一个从节点连上了主节点
Connect Out: 一个从节点正在连主节点
Create DB: 正在执行一个create-database 的操作
Daemon: 服务器内部进程,而不是来自客户端的链接
Debug: 进程正在生成调试信息
Delayed Insert: 该进程是一个延迟插入的处理程序
Drop DB: 正在执行一个 drop-database 的操作
Execute: 正在执行一个 Prepared Statement
Fetch: 正在从Prepared Statement 中获取执行结果
Field List: 正在获取表的列信息
Init DB: 该进程正在选取一个默认的数据库
Kill : 正在执行 kill 语句,杀死指定进程
Long Data: 正在从Prepared Statement 中检索 long data
Ping: 正在处理 server-ping 的请求
Prepare: 该进程正在准备一个 Prepared Statement
ProcessList: 该进程正在生成服务器进程相关信息
Quit: 该进程正在退出
Refresh:该进程正在刷表,日志或缓存;或者在重置状态变量,或者在复制服务器信息
Register Slave: 正在注册从节点
Reset Stmt: 正在重置 prepared statement
Set Option: 正在设置或重置客户端的 statement-execution 选项
Shutdown: 正在关闭服务器
Statistics: 该进程正在生成 server-status 信息
Table Dump: 正在发送表的内容到从服务器
Time: Unused
二、 其它查看方式
1、直接查询 information_schema.processlist
表
select id, db, user, host, command, time, state, info
from information_schema.processlist
order by time desc
2、使用 navicat 查看:【工具】-》【服务器监控】,每5秒刷新一次
image.png三、kill 掉有问题的进程
拼接需要kill掉的 processlist_id
# 查询时间大于60秒的进程
select concat('kill ', id, ';')
from information_schema.processlist
where command != 'Sleep'
and time > 60
order by time desc
再加如上的查询接口在命令中执行
> kill 3456;kill 34566;