mysql连接数信息查询使用INFORMATION_SCHEMA.PROCESSLIST表

当我们查看mysql的链接数的时候,会使用命令show full processlist; ,但是当链接非常多的时候,就不好看了,有时候我们只想看到那些ip的链接数最大,以便于定位出问题的程序,此时上面的命令就不够用了,我遇到此问题时,再网上了翻了很多,没有发现有这方面的解决文章,于是参考mysql文档,自己研究了下,写出此文,方便他人参考。

首先,启动mysql,如果有 SUPER 权限,则可以看到全部的线程,否则,只能看到自己发起的线程(这是指,当前对应的MySQL帐户运行的线程)。

我想要的结果就是根据ip来分组统计ip的mysql连接数,sql查询语句如下,

SELECT USER,SUBSTRING_INDEX(HOST,':',1) AS IP,COUNT(1) AS Total FROM INFORMATION_SCHEMA.PROCESSLIST GROUP BY IP ORDER BY Total DESC;

对此sql语句说明下,SUBSTRING_INDEX()函数是根据分隔符分割字符串维数组,第一个参数是要操作的字段,第二个参数是字段里字符串的分割符号,因为我使用到的HOST字段字符串为172.31.30.72:38969 ,所以分隔符为':',第3个参数,是要取的分割后数组的索引,为正数从左边取,然后根据IP分组。

    show full processlist; 的内容是从INFORMATION_SCHEMA.PROCESSLIST表里取得的。这两句是等价的,

SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST

SHOW FULL PROCESSLIST

所以使用INFORMATION_SCHEMA.PROCESSLIST表,用sql语句来查询,更为灵活。

参考,

https://dev.mysql.com/doc/refman/5.7/en/processlist-table.html

http://www.jsjtt.com/shujuku/mySql/26.html

转载于:https://my.oschina.net/u/1391177/blog/831538

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值