mysql查看连接数,常用方法

首页 2025-09-23 13:42:40


在 MySQL 中,你可以通过多种方式查看当前的数据库连接数、连接状态及相关配置,以下是常用方法:

1. 查看当前所有连接信息

使用 SHOW PROCESSLIST 命令(MySQL 5.7 及以下)或 SHOW FULL PROCESSLIST(显示完整 SQL 语句):
sql
-- 查看简略连接信息(仅前100条)
SHOW PROCESSLIST;

-- 查看所有连接的完整信息(包括完整SQL)
SHOW FULL PROCESSLIST;
 
结果说明
  • Id:连接 ID
  • User:连接的用户名
  • Host:客户端主机地址
  • db:当前连接的数据库
  • Command:连接状态(如 Sleep、Query、Connect 等)
  • Time:连接持续时间(秒)
  • Info:执行的 SQL 语句

2. 统计当前连接数

通过查询 information_schema 库中的 PROCESSLIST 表统计连接数:
sql
-- 统计总连接数
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;
 

3. 查看连接数配置及状态

通过 SHOW STATUS 和 SHOW VARIABLES 查看连接相关配置:
sql
-- 查看当前活跃连接数(正在执行SQL的连接)
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'         -- 累计连接总数
);
 

4. 查看连接数上限及修改

如果需要调整最大连接数限制:
sql
-- 临时修改最大连接数(重启后失效)
SET GLOBAL max_connections = 1000;

-- 永久修改(需在配置文件 my.cnf 或 my.ini 中设置)
[mysqld]
max_connections = 1000
 

注意事项

  • Threads_connected 表示当前总连接数(包括空闲连接)
  • Threads_running 表示正在活跃执行 SQL 的连接数,通常远小于 Threads_connected
  • 若 Threads_connected 接近 max_connections,可能需要增加最大连接数或优化连接池配置
  • 大量 Sleep 状态的连接可能是连接池配置不合理或应用未正确关闭连接导致的
通过以上方法可以全面监控 MySQL 的连接情况,帮助诊断连接数过高、连接泄露等问题。
nat123映射怎么用?超详细步骤,外网访问内网轻松搞定
nat123域名怎么用?两种方式轻松搞定
nat123怎么用?简单几步实现内网穿透
内网穿透工具对比:nat123、花生壳与轻量新选择
远程访问内网很简单:用对工具,一“箭”穿透
ngrok下载完全指南:从入门到获取客户端
内网远程桌面软件:穿透局域网边界的数字窗口
从外网远程访问内网服务器的完整方案
Windows Server 2008端口转发完全教程:netsh命令添加/查看/删除/重置
为什么三层交换机转发比Linux服务器快?转发表硬件加速的秘密