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 服务即可。

相关推荐
编程小Y2 小时前
MySQL原理
数据库·mysql
小石头 100863 小时前
MySQL 视图:把复杂变简单的“虚拟化”艺术
数据库·mysql
DB虚空行者4 小时前
MySQL误删/批量更新数据恢复实战:基于Flashback工具的完整方案
数据库·mysql
九皇叔叔4 小时前
MySQL Next-Key Lock 锁表事故全拆解(从现象到根治)
数据库·mysql
短剑重铸之日5 小时前
7天读懂MySQL|Day 4:锁与并发控制
数据库·mysql·架构
Java水解5 小时前
MySQL定时任务详解 - Event Scheduler 事件调度器从基础到实战
后端·mysql
爱学习的小可爱卢6 小时前
数据库MySQL——MySQL 可重复读隔离级别:Read View 底层原理与幻读问题深度剖析(面试必知)
数据库·mysql
lkbhua莱克瓦247 小时前
基础-事务
开发语言·数据库·笔记·mysql·事务
luoluoal7 小时前
基于python的自然语言处理技术的话题文本分类的研究(源码+文档)
python·mysql·django·毕业设计·源码
Cosolar8 小时前
MySQL EXPLAIN 执行计划分析:能否查看 JOIN 关联顺序
数据库·后端·mysql