MySQL8.0连接数查询全攻略

在 MySQL 8.0 中,查看连接数相关信息的命令主要分为查看连接数统计 、查看最大连接数配置 、查看连接进程详情等几类,以下是具体命令及说明:

1. 查看当前已建立的连接数(总连接数)

Threads_connected 表示当前 MySQL 服务器已建立的客户端连接总数(包括空闲和活跃连接),是最常用的连接数统计指标:

sql 复制代码
SHOW STATUS LIKE 'Threads_connected';

示例输出:

复制代码
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_connected | 25    |
+-------------------+-------+

2. 查看当前活跃连接数(正在执行 SQL 的连接)

Threads_running 表示当前正在执行 SQL 语句或处理请求的活跃连接数(空闲连接不会计入):

sql 复制代码
SHOW STATUS LIKE 'Threads_running';

示例输出:

复制代码
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| Threads_running | 3     |
+-----------------+-------+

3. 查看 MySQL 的最大连接数配置

max_connections 是 MySQL 配置的最大客户端连接数上限(MySQL 8.0 默认值为 151,可手动调整):

sql 复制代码
SHOW VARIABLES LIKE 'max_connections';

示例输出:

复制代码
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 151   |
+-----------------+-------+

4. 查看连接进程的详细信息

(1)简洁版(前 100 条)

SHOW PROCESSLIST 会列出当前所有连接的简要信息(用户、主机、数据库、状态、执行的 SQL 片段等),默认只显示前 100 条:

sql 复制代码
SHOW PROCESSLIST;
(2)完整版(所有连接)

SHOW FULL PROCESSLIST 会显示所有连接的完整信息(包括 SQL 语句的完整内容),适合排查长连接或慢查询:

sql 复制代码
SHOW FULL PROCESSLIST;
(3)通过information_schema表查询(支持 SQL 筛选)

也可直接查询information_schema.PROCESSLIST表,支持用 SQL 语法筛选、分组统计连接数:

sql 复制代码
-- 查看所有连接
SELECT * FROM information_schema.PROCESSLIST;

-- 按客户端主机分组统计连接数(去掉端口号)
SELECT SUBSTRING_INDEX(host, ':', 1) AS client_host, COUNT(*) AS connection_count
FROM information_schema.PROCESSLIST
GROUP BY client_host
ORDER BY connection_count DESC;

-- 按用户分组统计连接数
SELECT user, COUNT(*) AS connection_count
FROM information_schema.PROCESSLIST
GROUP BY user;

-- 查看空闲连接(状态为Sleep的连接)
SELECT * FROM information_schema.PROCESSLIST WHERE command = 'Sleep';

5. 其他相关统计指标

sql 复制代码
-- 查看历史最大连接数(MySQL启动后达到的最大连接数)
SHOW STATUS LIKE 'Max_used_connections';

-- 查看连接数相关的累计统计(如连接尝试次数、成功连接数)
SHOW STATUS LIKE 'Connections';  -- 累计连接尝试次数(包括失败的)
SHOW STATUS LIKE 'Threads_created';  -- 累计创建的线程数(与连接池相关)

权限说明

  • 普通用户执行SHOW PROCESSLIST/ 查询information_schema.PROCESSLIST时,只能看到自己的连接;
  • 拥有PROCESS权限的用户(如root),才能查看所有用户的连接信息。

调整最大连接数(可选)

若需调整max_connections,可临时修改(重启 MySQL 后失效):

sql 复制代码
SET GLOBAL max_connections = 500;

若需永久生效,需修改 MySQL 配置文件(my.cnf/my.ini),添加或修改:

复制代码
[mysqld]
max_connections = 500

修改后重启 MySQL 服务即可。

相关推荐
Umi·1 小时前
MySQL库表操作
数据库·mysql
星光开发者2 小时前
基于springboot智慧草场牛羊管理系统-计算机毕设【课程设计】50360
vue.js·spring boot·后端·mysql·php·课程设计·express
猫咪很可爱3 小时前
MySQL 视图与只读用户:安全查询的完整实践指南
数据库·sql·mysql
猫咪很可爱3 小时前
MySQL 5.7 备份恢复后函数与存储过程丢失:原因分析与正确备份姿势
数据库·mysql·bug·shell
秦时明月之君临天下5 小时前
MySQL purge 参数详解:innodb_purge_threads 与 innodb_purge_batch_size
数据库·mysql·1024程序员节
努力努力再努力wz6 小时前
【C++ 高阶系列】C++ 高性能网络编程:当 Reactor 遇见协程:从 epoll 回调到异步 MySQL,彻底打通任务挂起与恢复
网络·c++·mysql
这个DBA有点耶6 小时前
测试全绿,上线三周数据没入账——那个95%的兼容度报告,漏掉的是边界
数据库·mysql·架构
gf13211117 小时前
python_高德地图驾车时长查询
数据库·python·mysql
时间售卖铺7 小时前
MySQL 日志管理
运维·数据库·mysql·云原生
秋风点枝7 小时前
数据库 01 · 体系结构与存储引擎
数据库·mysql