• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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 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命令检视性能的讲解
    • MySQL SHOW PROCESSLIST协助故障诊断全过程
    • mysql show processlist 显示mysql查询进程
    • 通过mysql show processlist 命令检查mysql锁的方法
    • Ubuntu下Mysql 常用指令及中文乱码问题
    • mysql中show指令使用方法详细介绍
    • 关于在php.ini中添加extension=php_mysqli.dll指令的说明
    上一篇:MySQL 8.0.18 Hash Join不支持left/right join左右连接问题
    下一篇:Mybatis中的动态SQL语句解析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    MySQL数据库show processlist指令使用解析 MySQL,数据库,show,processlist,