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

相关推荐
唐青枫3 天前
MySQL JSON 实战详解:从存储、查询、更新到 JSON_TABLE 与索引
sql·mysql
小满8783 天前
5.Mysql事务隔离级别与锁机制
mysql
元Y亨H4 天前
技术笔记:MySQL 字符集排序规则与大小写敏感性问题解决方案
mysql
这个DBA有点耶5 天前
GROUP BY优化全解:如何写出既不丢数据又飞快的分组查询
数据库·mysql·架构
掉头发的王富贵5 天前
【StarRocks】极限十分钟入门StarRocks
数据库·sql·mysql
SamDeepThinking5 天前
一条UPDATE语句在MySQL 8.0中到底加了几把锁?
后端·mysql·程序员
李白客7 天前
KES新版MySQL兼容能力再升级意味着什么?
mysql·国产数据库
Jim6009 天前
【吃透 MySQL InnoDB连载】第 1 章・解密线上数据库高频故障
mysql
GreatSQL9 天前
gt-checksum v4.0.0 新功能解读系列文章(4):SSL 加密连接——数据校验传输安全再升级
mysql