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

相关推荐
s_daqing17 分钟前
ubuntu(arm,手机)安装mysql
arm开发·mysql·ubuntu
廋到被风吹走24 分钟前
【数据库】【Mysql】慢SQL深度分析:EXPLAIN 与 optimizer_trace 全解析
数据库·sql·mysql
heze091 小时前
sqli-labs-Less-16自动化注入方法
mysql·网络安全·自动化
小冷coding10 小时前
【MySQL】MySQL 插入一条数据的完整流程(InnoDB 引擎)
数据库·mysql
周杰伦的稻香13 小时前
MySQL中常见的慢查询与优化
android·数据库·mysql
·云扬·15 小时前
MySQL 常见存储引擎详解及面试高频考点
数据库·mysql·面试
何以不说话16 小时前
mysql 的主从复制
运维·数据库·学习·mysql
橘子1317 小时前
MySQL库的操作(二)
数据库·mysql·oracle
·云扬·18 小时前
MySQL各版本核心特性演进与主流分支深度解析
数据库·sql·mysql
田超凡19 小时前
深入理解MySQL_6 Temporary临时表
mysql·java-ee