查mysql连接数应根据需求选择:show status like 'threads_connected'获当前打开连接数(含空闲),轻量适合监控;show processlist列线程详情(含sql、用户、状态),但权限受限且默认仅前100条。

查 MySQL 当前连接数用 SHOW STATUS 还是 SHOW PROCESSLIST
要看你真正想查什么:SHOW STATUS LIKE 'Threads_connected' 返回的是当前打开的连接数(含空闲),而 SHOW PROCESSLIST 列出的是正在执行或休眠中的线程详情。前者轻量、适合监控;后者能看到 SQL、用户、状态,但权限不足时可能只看到自己的线程。
-
Threads_connected是实时计数器,不包含已关闭但未清理的连接(比如客户端断开后服务端还没超时) - 如果要判断是否接近
max_connections上限,优先看Threads_connected,配合SHOW VARIABLES LIKE 'max_connections' -
SHOW PROCESSLIST默认只显示前 100 条,加FULL关键字(SHOW FULL PROCESSLIST)才能看到完整 SQL,但要注意长 SQL 可能截断
PostgreSQL 怎么查活跃连接和等待锁的会话
PostgreSQL 没有类似 MySQL 的 Threads_connected 简单变量,得查系统视图:pg_stat_activity 是核心。它每行代表一个后端进程,state 字段直接告诉你是不是空闲、活动、等待锁还是崩溃中。
- 查总连接数:
SELECT COUNT(*) FROM pg_stat_activity - 查正在等锁的会话:
SELECT pid, usename, wait_event_type, wait_event, query FROM pg_stat_activity WHERE wait_event_type = 'Lock' - 注意
backend_start和state_change时间戳能帮你识别“假死”连接(比如应用没正确 close,但实际已无操作) - 9.6+ 版本才有
wait_event_type,旧版本只能靠waiting = true判断,但不够精确
SQL Server 查连接数为什么 sys.dm_exec_sessions 比 sp_who2 更可靠
sp_who2 是兼容性存储过程,输出格式不固定、字段名不标准,而且默认过滤掉系统会话,容易漏掉关键连接;sys.dm_exec_sessions 是动态管理视图,字段语义清晰、可 JOIN、支持 WHERE 筛选,更适合脚本化监控。
- 查当前用户连接总数:
SELECT COUNT(*) FROM sys.dm_exec_sessions WHERE is_user_process = 1 - 查阻塞源头:
SELECT session_id, blocking_session_id, status, command FROM sys.dm_exec_requests WHERE blocking_session_id 0 - 注意
sys.dm_exec_sessions不包含已断开但尚未清理的连接(比如网络闪断后,会话状态可能还卡在sleeping),需结合last_request_end_time判断是否“挂起”
查全局参数时,MySQL 的 SHOW VARIABLES 和 PostgreSQL 的 SHOW ALL 差在哪
表面都是查配置,但行为差异很大:MySQL 的 SHOW VARIABLES 默认只显示非动态变量的启动值,而 PostgreSQL 的 SHOW ALL 显示所有运行时生效的参数(含被 SET 覆盖过的),且区分 boot_val(启动值)、reset_val(上次重置值)和 setting(当前值)。
- MySQL 中改了
my.cnf但没重启,SHOW VARIABLES仍显示旧值;PostgreSQL 中ALTER SYSTEM SET后需RELOAD才生效,SHOW ALL会立刻反映setting,但boot_val不变 - MySQL 的
@@global.xxx和@@session.xxx可以直接 SELECT,PostgreSQL 必须用SHOW xxx或查pg_settings视图 - PostgreSQL 的
pg_settings里context字段决定修改方式:是postmaster(必须重启)、sighup(reload 即可)还是user(会话级 SET 就行)










