各位用户为了找寻关于MySQL数据库show processlist指令使用解析的资料费劲了很多周折。这里教程网为您整理了关于MySQL数据库show processlist指令使用解析的相关资料,仅供查阅,以下为您介绍关于MySQL数据库show processlist指令使用解析的详细内容
在实际项目开发中,如果我们对数据库的压力比较大,比如有大批量的查询或者插入等sql,尤其是多线程插入等情况,针对部分执行比较慢的sql,我们可以将其kill掉,常用的一个命令就是show processlist
1. show processlist是什么
show processlist:通过查看mysql的官网,可以发现,其主要是查询数据库中哪些线程正在执行,针对比较慢的线程(time的数值比较大的线程)我们可以将其kill掉。此外,show full processlist 返回的结果是实时变化的。
2. show processlist怎么用
有三种方式可以执行show processlist,可以通过命令行、SQL语句、Navicat客户端等。
1) 命令行:SHOW FULL PROCESSLISTG
执行结果如下:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53mysql> SHOW
FULL
PROCESSLISTG
*************************** 1. row ***************************
Id: 1
User
: system
user
Host:
db:
NULL
Command:
Connect
Time
: 1030455
State: Waiting
for
master
to
send event
Info:
NULL
*************************** 2. row ***************************
Id: 2
User
: system
user
Host:
db:
NULL
Command:
Connect
Time
: 1004
State: Has
read
all
relay log; waiting
for
the slave
I/O thread
to
update
it
Info:
NULL
*************************** 3. row ***************************
Id: 3112
User
: replikator
Host: artemis:2204
db:
NULL
Command: Binlog Dump
Time
: 2144
State: Has sent
all
binlog
to
slave; waiting
for
binlog
to
be updated
Info:
NULL
*************************** 4. row ***************************
Id: 3113
User
: replikator
Host: iconnect2:45781
db:
NULL
Command: Binlog Dump
Time
: 2086
State: Has sent
all
binlog
to
slave; waiting
for
binlog
to
be updated
Info:
NULL
*************************** 5. row ***************************
Id: 3123
User
: stefan
Host: localhost
db: apollon
Command: Query
Time
: 0
State:
NULL
Info: SHOW
FULL
PROCESSLIST
rows
in
set
(0.00 sec)
2) 可以通过sql语句查询数据库中相关信息的表
select id, db, user, host, command, time, state, info from information_schema.processlist order by time desc
3) 可以通过Navicat工具查看,如下图是使用Navicat查询到的截图。
3. show processlist怎么解读
下面对于使用该命令查询到的结果进行解读。
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。这个语句可以使客户端发来的执行语句也可以是内部执行的语句
4. show processlist结果怎么处理
在上面的步骤中,我们可以查到每个线程的执行时间等信息,因此针对执行时间比较长的线程,我们可以直接将其kill掉,直接执行 kill Id号即可。
如果要查时间超过5分钟的,可以拼接并执行以下sql
? 1select
concat(
'kill '
, id,
';'
)
from
information_schema.processlist
where
command !=
'Sleep'
and
time
> 5*60
order
by
time
desc
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
原文链接:https://www.cnblogs.com/Demrystv/p/11764283.html