查看MySQL 连接信息--连接空闲时间及正在执行的SQL
MySQL 客户端与MySQL server建立连接后,就可以执行SQL语句了。
如何查看一个连接上是否正在执行SQL语句,或者连接是否处于空闲呢?
下面我们做下测试。
1.查看连接的空闲时间
首先看下测试程序。
代码中,每3s执行一条sql语句。
//conn_idle_time.go
package main
import (
"database/sql"
"log"
"time"
_ "github.com/go-sql-driver/mysql"
)
var DB *sql.DB
var dataBase = "root:Aa123456@tcp(127.0.0.1:3306)/?loc=Local&parseTime=true"
func mysqlInit() {
var err error
DB, err = sql.Open("mysql", dataBase)
if err != nil {
log.Fatalln("open db fail:", err)
}
DB.SetMaxOpenConns(1)
err = DB.Ping()
if err != nil {
log.Fatalln("ping db fail:", err)
}
}
func main() {
mysqlInit()
for {
execSql()
time.Sleep(3*time.Second)
}
}
func execSql() {
var connection_id int
err := DB.QueryRow("select CONNECTION_ID()").Scan(&connection_id)
if err != nil {
log.Println("query connection id failed:", err)
return
}
log.Println("connection id:", connection_id)
}
启动程序,输出结果如下:
2019/10/13 12:20:59 connection id: 5
2019/10/13 12:21:02 connection id: 5
2019/10/13 12:21:05 connection id: 5
2019/10/13 12:21:08 connection id: 5
2019/10/13 12:21:11 connection id: 5
2019/10/13 12:21:14 connection id: 5
2019/10/13 12:21:17 connection id: 5
2019/10/13 12:21:20 connection id: 5
2019/10/13 12:21:23 connection id: 5
2019/10/13 12:21:26 connection id: 5
2019/10/13 12:21:29 connection id: 5
可以看到,连接MySQL的connection id 为5。
接着,通过show processlist查看连接情况:
mysql> show processlist;
+----+------+-----------------+------+---------+------+----------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------+------+---------+------+----------+------------------+
| 3 | root | localhost | NULL | Query | 0 | starting | show processlist |
| 5 | root | localhost:51823 | NULL | Sleep | 0 | | NULL |
+----+------+-----------------+------+---------+------+----------+------------------+
2 rows in set (0.00 sec)
mysql> show processlist;
+----+------+-----------------+------+---------+------+----------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------+------+---------+------+----------+------------------+
| 3 | root | localhost | NULL | Query | 0 | starting | show processlist |
| 5 | root | localhost:51823 | NULL | Sleep | 3 | | NULL |
+----+------+-----------------+------+---------+------+----------+------------------+
2 rows in set (0.00 sec)
mysql> show processlist;
+----+------+-----------------+------+---------+------+----------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------+------+---------+------+----------+------------------+
| 3 | root | localhost | NULL | Query | 0 | starting | show processlist |
| 5 | root | localhost:51823 | NULL | Sleep | 1 | | NULL |
+----+------+-----------------+------+---------+------+----------+------------------+
2 rows in set (0.00 sec)
mysql> show processlist;
+----+------+-----------------+------+---------+------+----------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------+------+---------+------+----------+------------------+
| 3 | root | localhost | NULL | Query | 0 | starting | show processlist |
| 5 | root | localhost:51823 | NULL | Sleep | 3 | | NULL |
+----+------+-----------------+------+---------+------+----------+------------------+
2 rows in set (0.00 sec)
mysql> show processlist;
+----+------+-----------------+------+---------+------+----------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------+------+---------+------+----------+------------------+
| 3 | root | localhost | NULL | Query | 0 | starting | show processlist |
| 5 | root | localhost:51823 | NULL | Sleep | 2 | | NULL |
+----+------+-----------------+------+---------+------+----------+------------------+
2 rows in set (0.00 sec)
mysql> show processlist;
+----+------+-----------------+------+---------+------+----------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------+------+---------+------+----------+------------------+
| 3 | root | localhost | NULL | Query | 0 | starting | show processlist |
| 5 | root | localhost:51823 | NULL | Sleep | 1 | | NULL |
+----+------+-----------------+------+---------+------+----------+------------------+
2 rows in set (0.00 sec)
可以看到localhost:51823是连接MySQL server使用的端口,当Command列为Sleep时,表示当前连接是空闲的,Time列显示了处于当前状态的时间。
每执行一次SQL语句,Sleep状态的Time都会被重置为0.
如果当前连接一直没有执行SQL语句,那么Sleep状态的Time会一直增加,直到达到连接最大时间(由参数wait_timeout控制),最后连接断开。
再来看下,如何查看正在执行的SQL语句。
2.查看连接正在执行的SQL
将上面示例程序执行的SQL语句改为:
select SLEEP(10)
查看连接情况:
mysql> show processlist;
+----+------+-----------------+------+---------+------+------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------+------+---------+------+------------+------------------+
| 3 | root | localhost | NULL | Query | 0 | starting | show processlist |
| 6 | root | localhost:52186 | NULL | Query | 1 | User sleep | select SLEEP(10) |
+----+------+-----------------+------+---------+------+------------+------------------+
2 rows in set (0.00 sec)
mysql> show processlist;
+----+------+-----------------+------+---------+------+------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------+------+---------+------+------------+------------------+
| 3 | root | localhost | NULL | Query | 0 | starting | show processlist |
| 7 | root | localhost:52200 | NULL | Query | 3 | User sleep | select SLEEP(10) |
+----+------+-----------------+------+---------+------+------------+------------------+
2 rows in set (0.00 sec)
mysql> show processlist;
+----+------+-----------------+------+---------+------+------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------+------+---------+------+------------+------------------+
| 3 | root | localhost | NULL | Query | 0 | starting | show processlist |
| 7 | root | localhost:52200 | NULL | Query | 7 | User sleep | select SLEEP(10) |
+----+------+-----------------+------+---------+------+------------+------------------+
2 rows in set (0.00 sec)
mysql> show processlist;
+----+------+-----------------+------+---------+------+------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------+------+---------+------+------------+------------------+
| 3 | root | localhost | NULL | Query | 0 | starting | show processlist |
| 7 | root | localhost:52200 | NULL | Query | 8 | User sleep | select SLEEP(10) |
+----+------+-----------------+------+---------+------+------------+------------------+
2 rows in set (0.00 sec)
mysql> show processlist;
+----+------+-----------------+------+---------+------+------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------+------+---------+------+------------+------------------+
| 3 | root | localhost | NULL | Query | 0 | starting | show processlist |
| 7 | root | localhost:52200 | NULL | Query | 10 | User sleep | select SLEEP(10) |
+----+------+-----------------+------+---------+------+------------+------------------+
2 rows in set (0.00 sec)
mysql> show processlist;
+----+------+-----------------+------+---------+------+----------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------+------+---------+------+----------+------------------+
| 3 | root | localhost | NULL | Query | 0 | starting | show processlist |
| 7 | root | localhost:52200 | NULL | Sleep | 12 | | NULL |
+----+------+-----------------+------+---------+------+----------+------------------+
2 rows in set (0.00 sec)
从输出可以看到,Command为Query表示正在执行语句,Info列显示了正在执行的具体SQL语句。
查看MySQL 连接信息--连接空闲时间及正在执行的SQL的更多相关文章
- 查看mysql 库信息和表结构与表创建方法
一.查看基础信息 1.查看数据库存储位置 show global variables like "%datadir%"; 2.查看数据库的版本 select version(); ...
- 查看mysql相关信息
查看本机mysql的相关信息,执行以下SQL即可: SHOW VARIABLES LIKE "%char%";
- mysql中如何在命令行中,执行一个SQL脚本文件?
需求描述: 在mysql数据库的使用中,有的时候,需要直接在shell的命令行中,执行某个SQL脚本文件, 比如,要初始化数据库,创建特定的存储过程,创建表等操作,这里进行一个基本的测试. 一般情况, ...
- 如何查看MySQL connection id连接id
每个MySQL连接,都有一个连接ID,可以通过 connection_id()查看. 连接id也可以通过以下方式查看: show processlist中id列 information_schema. ...
- 查看MySQL数据的连接
show processlist; select host from information_schema.processlist; 查看那台机器及连接数 select host, cur ...
- mysql 查看mysql相关信息
登入数据库的时候: select @@version; select version(); 复制代码 mysql> select @@version; +-----------+ | @@ver ...
- mysql工具——使用mysqlshow查看mysql对象信息,查看mysql表大小
关键词:查看表大小,mysqlshow mysqlshow --count -uroot -p test
- 查看mysql数据库的所有配置信息和服务器的各种状态
查看MySQL服务器配置信息 mysql> show variables; 2, 查看MySQL服务器运行的各种状态值 mysql> show global status;
- 查看mysql是否安装成功和mysql的版本信息
转自:https://blog.csdn.net/hellocsz/article/details/81241204 使用快捷键win+R打开 进入mysql的安装目录下的\bin(本人安装路劲为E: ...
随机推荐
- weui 注意事项
个人随笔日记,还请小心采纳为甚 手机移动web开发必须要做的两点: 1.body中加上ontouchstart,即<body ontouchstart>...</body>: ...
- 多进程编程——理论讲解与 multiprocessing 模块
多进程编程 import os pid = os .fork() 功能 :创建新的进程 参数: 无 返回值 :失败返回一个负数 成功:在原有进程中返回新的进程的PID号 在新进程中返回为0* 子进程会 ...
- 从0到1写rtos:事件的挂起
任务的状态: 未创建:只定义了任务代码,未调用tTaskInit()初始化 就绪:任务已经创建完毕,且等待机会占用CPU运行 运行:任务正在占用CPU运行代码 延时:任务调用tTaskDelay()延 ...
- Hadoop_30_MapReduce_多job串联
一个稍复杂点的处理逻辑往往需要多个mapreduce程序串联处理,多job的串联可以借助mapreduce框架的JobControl实现 示例代码: 每个job装配完成才可以进行下面代码: Cont ...
- MyBatis-05-解决属性名和字段名不一致的问题
5.解决属性名和字段名不一致的问题 1.问题 数据库中的字段 新建一个项目,拷贝之前的,测试实体类字段不一致的情况. public class User { private int id; priva ...
- hdu4786 Fibonacci Tree[最小生成树]【结论题】
一道结论题:如果最小生成树和最大生成树之间存在fib数,成立.不存在或者不连通则不成立.由于是01图,所以这个区间内的任何生成树都存在. 证明:数学归纳?如果一棵树没有办法再用非树边0边替代1边了,那 ...
- 错误信息:[ERR] Sorry, can't connect to node 10.211.55.8:7001
错误信息: [root@centos-linux redis-cluster]# ./redis-trib.rb create --replicas 1 10.211.55.8:7001 10.211 ...
- Xilinx的IP核接口命名说明
s_axis中的s表示:slave(从); m_axis中的m表示:master(主). axis表示AXI(一种总线协议) Signal.
- bat 通过命令以管理员方式运行程序
@echo off mode con lines= cols= % mshta vbscript:CreateObject()(window.close)&&exit cd /d &q ...
- 在django中解决跨域AJAX
由于浏览器存在同源策略机制,同源策略阻止从一个源加载的文档或脚本获取另一个源加载的文档的属性. 特别的:由于同源策略是浏览器的限制,所以请求的发送和响应是可以进行,只不过浏览器不接收罢了. 浏览器同源 ...