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 的连接情况,帮助诊断连接数过高、连接泄露等问题。
MySQL连接就这么简单!本地远程、编程语言连接方法一网打尽
还在为MySQL日期计算头疼?这份加一天操作指南能解决90%问题
MySQL日志到底在哪里?Linux/Windows/macOS全平台查找方法在此
MySQL数据库管理工具全景评测:从Workbench到DBeaver的技术选型指南
MySQL密码忘了怎么办?这份重置指南能救急,Windows/Linux/Mac都适用
你的MySQL为什么经常卡死?可能是锁表在作怪!快速排查方法在此
MySQL单表卡爆怎么办?从策略到实战,一文掌握「分表」救命技巧
清空MySQL数据表千万别用错!DELETE和TRUNCATE这个区别可能导致重大事故
你的MySQL中文排序一团糟?记住这几点,轻松实现准确拼音排序!
别再混淆Hive和MySQL了!读懂它们的天壤之别,才算摸到大数据的门道