在 MySQL 中,你可以通过多种方式查看当前的数据库连接数、连接状态及相关配置,以下是常用方法:
使用 SHOW PROCESSLIST 命令(MySQL 5.7 及以下)或 SHOW FULL PROCESSLIST(显示完整 SQL 语句):
SHOW PROCESSLIST;
SHOW FULL PROCESSLIST;
结果说明:
-
Id:连接 ID
-
User:连接的用户名
-
Host:客户端主机地址
-
db:当前连接的数据库
-
Command:连接状态(如 Sleep、Query、Connect 等)
-
Time:连接持续时间(秒)
-
Info:执行的 SQL 语句
通过查询 information_schema 库中的 PROCESSLIST 表统计连接数:
SELECT COUNT(*) AS total_connections FROM information_schema.PROCESSLIST;
SELECT USER, COUNT(*) AS connections FROM information_schema.PROCESSLIST GROUP BY USER;
SELECT HOST, COUNT(*) AS connections FROM information_schema.PROCESSLIST GROUP BY HOST;
通过 SHOW STATUS 和 SHOW VARIABLES 查看连接相关配置:
SHOW STATUS LIKE 'Threads_connected';
SHOW VARIABLES LIKE 'max_connections';
SHOW STATUS LIKE 'Threads_created';
SHOW STATUS WHERE Variable_name IN (
'Threads_connected',
'Threads_running',
'Connections'
);
如果需要调整最大连接数限制:
SET GLOBAL max_connections = 1000;
[mysqld]
max_connections = 1000
-
Threads_connected 表示当前总连接数(包括空闲连接)
-
Threads_running 表示正在活跃执行 SQL 的连接数,通常远小于 Threads_connected
-
若
Threads_connected 接近 max_connections,可能需要增加最大连接数或优化连接池配置
-
大量
Sleep 状态的连接可能是连接池配置不合理或应用未正确关闭连接导致的
通过以上方法可以全面监控 MySQL 的连接情况,帮助诊断连接数过高、连接泄露等问题。