mysql排查线上数据库问题,经常会用到 show processlist和show full processlist这两条命令

processlist命令的输出结果显示了有哪些线程在运行,不仅可以查看当前所有的连接数,还可以查看当前的连接状态帮助识别出有问题的查询语句等。

如果是root帐号,能看到所有用户的当前连接。如果是其他普通帐号,则只能看到自己占用的连接。showprocesslist只能列出当前100条。如果想全部列出,可以使用SHOW FULL PROCESSLIST命令

各个列的含义:

1、id列,用户登录mysql时,系统分配的"connection_id",可以使用函数connection_id()查看
2、user列,显示当前用户。如果不是root,这个命令就只显示用户权限范围的sql语句
3、host列,显示这个语句是从哪个ip的哪个端口上发的,可以用来跟踪出现问题语句的用户
4、db列,显示这个进程目前连接的是哪个数据库
5、command列,显示当前连接的执行的命令,一般取值为休眠(sleep),查询(query),连接(connect)等
6、time列,显示这个状态持续的时间,单位是秒
7、state列,显示使用当前连接的sql语句的状态,很重要的列。state描述的是语句执行中的某一个状态。一个sql语句,以查询为例,可能需要经过copying
to tmp table、sorting result、sending data等状态才可以完成
8、info列,显示这个sql语句,是判断问题语句的一个重要依据,一般记录的是线程执行的语句。默认只显示前100个字符,也就是你看到的语句可能是截断了的,要看全部信息,需要使用 show full processlist。

备注:

1、按客户端的 IP 分组,查看各个客户端的链接数情况

     select client_ip,count(client_ip) as client_num from (select substring_index(host,':' ,1) as client_ip from information_schema.processlist ) as connect_info group by client_ip order by client_num desc;
         2、查看正在执行的线程,并按 Time 倒排序,看看有没有执行时间特别长的线程
      select * from information_schema.processlist where Command != 'Sleep' order by Time desc;
         3、找出所有执行时间超过 1 分钟的线程,拼出 kill 语句串,方便后面杀死堵塞进程
      select concat('kill ', id, ';') from information_schema.processlist where Command != 'Sleep' and Time > 60 order by Time desc;

mysql慢SQL排查之show processlist和show full processlist的更多相关文章

  1. Mysql 高负载排查思路

    Mysql 高负载排查思路 发现问题 top命令 查看服务器负载,发现 mysql竟然百分之两百的cpu,引起Mysql 负载这么高的原因,估计是索引问题和某些变态SQL语句. 排查思路 1. 确定高 ...

  2. PHP+MYSQL网站SQL Injection攻防

    程序员们写代码的时候讲究TDD(测试驱动开发):在实现一个功能前,会先写一个测试用例,然后再编写代码使之运行通过.其实当黑客SQL Injection时,同样是一个TDD的过程:他们会先尝试着让程序报 ...

  3. HP+MYSQL网站SQL Injection攻防

    WebjxCom提示:程序员们写代码的时候讲究TDD(测试驱动开发):在实现一个功能前,会先写一个测试用例,然后再编写代码使之运行通过.其实当黑客SQL Injection时,同样是一个TDD的过程: ...

  4. mysql 的show processlist和show full processlist区别

    processlist命令的输出结果显示了有哪些线程在运行,不仅可以查看当前所有的连接数,还可以查看当前的连接状态帮助识别出有问题的查询语句等. 如果是root帐号,能看到所有用户的当前连接.如果是其 ...

  5. mysql查看连接数排查问题

    #mysql查看连接数SHOW VARIABLES LIKE '%max_connections%'; # max_connections 最大连接数 SHOW VARIABLES LIKE '%co ...

  6. oracle 、mysql、 sql server使用记录

    oracle .mysql. sql server使用记录 mysql常用命令: mysqld --启动mysql数据库 show databases; -- 查看数据库 use database; ...

  7. mysql慢sql报警系统

    前言:最近有同事反应有的接口响应时间时快时慢,经过排查有的数据层响应时间过长,为了加快定位定位慢sql的准确性,决定简单地搭建一个慢sql报警系统 具体流程如下架构图 第一步:记录日志 每个业务系统都 ...

  8. (2.15)Mysql之SQL基础——开发设计最佳规范

    (2.15)Mysql之SQL基础——开发设计最佳规范 关键字:mysql三大范式,mysql sql开发规范 分析: show profile.mysqllsla.mysqldrmpslow.exp ...

  9. MySQL常用SQL整理

    MySQL常用SQL整理 一.DDL #创建数据库 CREATE DATABASE IF NOT EXISTS product DEFAULT CHARSET utf8 COLLATE utf8_ge ...

随机推荐

  1. POJ 1944:Fiber Communications

    Fiber Communications Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 4236   Accepted: 1 ...

  2. Frequently arduino function

    unctions                                                     功能if(Serial)                           ...

  3. 如何在Swift的代码中使用OC的代码, 在OC的代码中使用Swift的代码?

    https://www.cnblogs.com/upliver/p/5138160.html 如何在Swift的代码中使用OC的代码, 在OC的代码中使用Swift的代码? 随着苹果公司对Swift的 ...

  4. UVALive 4487 Exclusive-OR 加权并查集神题

    已知有 x[0-(n-1)],但是不知道具体的值,题目给定的信息 只有 I P V,说明 Xp=V,或者 I P Q V,说明 Xp ^ Xq=v,然后要求回答每个询问,询问的是 某任意的序列值 Xp ...

  5. 干货|微软远程桌面服务蠕虫漏洞(CVE-2019-1182)分析

    2019年8月,微软发布了一套针对远程桌面服务的修复程序,其中包括两个关键的远程执行代码(RCE)漏洞,CVE-2019-1181和CVE-2019-1182.与之前修复的"BlueKeep ...

  6. StringBuffer和StringBuilder类

    对字符串进行修改的时候,需要使用StringBuffer和StringBuilder类(String类是不可改变的,一旦创建了String对象,那它的值就无法改变了). 和String类不同的是,St ...

  7. Windows10 与 WSL(Ubuntu)的文件互访

    从WSL访问win10的文件 > cd /mnt 从win10访问WSL的文件 打开Ubuntu > explorer.exe . (后面的点不要漏掉)

  8. JAVA基础——使用配置文件

    一. 前言         日常我们做项目中,我们经常会遇到这样的情况:由于开发环境和生产环境的不同,项目部署在生产环境之前,有些参数我们并不知道如何取值.例如:数据库链接设定,我们在部署生产环境之前 ...

  9. Zookeeper--Zookeeper单机安装

    参考 https://www.cnblogs.com/lsdb/p/7297731.html https://zookeeper.apache.org/doc/r3.4.13/zookeeperSta ...

  10. python中的单元测试模块unittest

    unittest的属性: 该文以思维导图的形式描述unittest的重要属性. 其中前四个是unittest最核心的三个属性. testcase:测试用例: testsuite:测试套件,多个测试用例 ...