怎么在MySQL数据库中使用show processlist指令

59次阅读
没有评论

共计 2331 个字符,预计需要花费 6 分钟才能阅读完成。

自动写代码机器人,免费开通

怎么在 MySQL 数据库中使用 show processlist 指令?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

1. show processlist 是什么

show processlist:通过查看 mysql 的官网,可以发现,其主要是查询数据库中哪些线程正在执行,针对比较慢的线程(time 的数值比较大的线程)我们可以将其 kill 掉。此外,show full processlist 返回的结果是实时变化的。

2. show processlist 怎么用

有三种方式可以执行 show processlist,可以通过命令行、SQL 语句、Navicat 客户端等。

1)命令行:SHOW FULL PROCESSLIST\G

执行结果如下:

mysql  SHOW FULL PROCESSLIST\G
*************************** 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

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

关于怎么在 MySQL 数据库中使用 show processlist 指令问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注丸趣 TV 行业资讯频道了解更多相关知识。

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计2331字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)