时间:2021-05-24
在实际项目开发中,如果我们对数据库的压力比较大,比如有大批量的查询或者插入等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 PROCESSLIST\G
执行结果如下:
mysql> SHOW FULL PROCESSLIST\G*************************** 1. row ***************************Id: 1User: system userHost:db: NULLCommand: ConnectTime: 1030455State: Waiting for master to send eventInfo: NULL*************************** 2. row ***************************Id: 2User: system userHost:db: NULLCommand: ConnectTime: 1004State: Has read all relay log; waiting for the slave I/O thread to update itInfo: NULL*************************** 3. row ***************************Id: 3112User: replikatorHost: artemis:2204db: NULLCommand: Binlog DumpTime: 2144State: Has sent all binlog to slave; waiting for binlog to be updatedInfo: NULL*************************** 4. row ***************************Id: 3113User: replikatorHost: iconnect2:45781db: NULLCommand: Binlog DumpTime: 2086State: Has sent all binlog to slave; waiting for binlog to be updatedInfo: NULL*************************** 5. row ***************************Id: 3123User: stefanHost: localhostdb: apollonCommand: QueryTime: 0State: NULLInfo: SHOW FULL PROCESSLISTrows 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以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
MySQL扩展库操作MySQL数据库的步骤如下:1:获取连接.2:选取书库。3:设置操作编码。4:发送SQL指令(MySQL数据库可以分为四种指令:4.1:dd
本文主要介绍mysql数据库下show命令的主要用法 a.showtables或showtablesfromdatabase_name;--显示当前数据库中所
MySQL数据库使用命令行备份|MySQL数据库备份命令例如:数据库地址:127.0.0.1数据库用户名:root数据库密码:root数据库名称:szldb备份
mysql建立数据库使用create命令:新建数据库例:以mysql最高管理员登录,在mysql>createdatabaseXXXXX;xxxxx即为数据库名
详解JDBC数据库链接及相关方法的封装 使用的是MySQL数据库,首先导入驱动类,然后根据数据库URL和用户名密码获得数据的链接。由于使用的是MySQL数据库,