MySQL查询当前连接数的语句

1. 查看当前总连接数

SHOW STATUS LIKE 'Threads_connected';
  • 返回当前建立的连接总数

 

2. 查看最大连接数配置

SHOW VARIABLES LIKE 'max_connections';
  • 显示服务器允许的最大并发连接数

 

3. 查看详细的连接信息

SHOW PROCESSLIST;
  • 显示所有连接的详细信息(用户、来源IP、执行的SQL等)

 

4. 按用户分组统计连接数

SELECT user, COUNT(*) as connections 
FROM information_schema.processlist 
GROUP BY user;

 

5. 查看连接数使用率

SELECT 
  (SELECT VARIABLE_VALUE 
   FROM performance_schema.global_status 
   WHERE VARIABLE_NAME = 'Threads_connected') AS current_connections,
  
  (SELECT VARIABLE_VALUE 
   FROM performance_schema.global_variables 
   WHERE VARIABLE_NAME = 'max_connections') AS max_connections,
  
  ROUND((SELECT VARIABLE_VALUE 
         FROM performance_schema.global_status 
         WHERE VARIABLE_NAME = 'Threads_connected') / 
        (SELECT VARIABLE_VALUE 
         FROM performance_schema.global_variables 
         WHERE VARIABLE_NAME = 'max_connections') * 1002) AS connection_usage_rate;

 

6. 查看不同状态的连接数

SELECT command, COUNT(*) 
FROM information_schema.processlist 
GROUP BY command;

 

7. 查看空闲连接数(Sleep状态)

SELECT COUNT(*) 
FROM information_schema.processlist 
WHERE command = 'Sleep';

 

注意事项:

  1. 需要至少 PROCESS 权限才能查看所有连接
  2. 生产环境连接数接近 max_C++onnections 时需要扩容或优化
  3. 长时间 Sleep 的连接可以考虑适当调低 wait_timeout 参数

如果需要终止连接,可以使用:

KILL [connection_id];  -- 从SHOW PROCESSLIST结果中获取ID