mysql用show processlist查会话,需process权限查看全部;postgresql用pg_stat_activity视图,可过滤join;sql server需联查sys.dm_exec_sessions和sys.dm_exec_requests,需view server state权限。

MySQL 中查当前连接会话用 SHOW PROCESSLIST
MySQL 没有标准的系统视图(如 PostgreSQL 的 pg_stat_activity),最直接的方式就是执行 SHOW PROCESSLIST。它返回当前所有客户端连接的 ID、用户、主机、数据库、命令、时间、状态和正在执行的 SQL(如果未被截断)。
注意:普通用户默认只能看到自己的会话;要查看全部,需要 PROCESS 权限(通常只有管理员有)。
- 加
FULL关键字可防止 SQL 列被截断:SHOW FULL PROCESSLIST - 想过滤掉 Sleep 状态的闲置连接?可以用
WHERE Command != 'Sleep',但SHOW本身不支持WHERE,得靠客户端处理,或改用information_schema.PROCESSLIST表(需权限且部分字段类型为TEXT,性能略低) - 连接数暴增时,
SHOW PROCESSLIST可能变慢,尤其在高并发写入场景下,建议搭配ORDER BY Time DESC快速定位长事务
PostgreSQL 中查活跃会话看 pg_stat_activity
PostgreSQL 把会话信息暴露为系统视图 pg_stat_activity,字段丰富、可过滤、可 JOIN,是标准做法。
常见需求对应写法:
- 只看当前数据库的活跃查询:
SELECT * FROM pg_stat_activity WHERE datname = current_database() AND state = 'active' - 查长时间空闲但未断开的连接:
WHERE state = 'idle in transaction' AND (now() - backend_start) > interval '5 minutes' -
pid字段是会话唯一标识,可用于后续pg_terminate_backend(<code>pid) 强制杀掉异常连接 - 注意:非超级用户只能看到自己发起的连接;若需查全部,需被授予
pg_read_all_activity角色(9.6+)或使用超级用户执行
SQL Server 中用 sys.dm_exec_sessions 和 sys.dm_exec_requests
SQL Server 不提供单条命令式指令,必须查动态管理视图(DMV)。sys.dm_exec_sessions 是会话级元数据,sys.dm_exec_requests 是当前正在执行的请求级快照,两者常 JOIN 使用。
典型组合查询:
SELECT s.session_id, s.login_name, s.host_name, r.status, r.command, r.wait_type, r.last_wait_type FROM sys.dm_exec_sessions s LEFT JOIN sys.dm_exec_requests r ON s.session_id = r.session_id WHERE s.is_user_process = 1;
-
is_user_process = 1排除系统内部会话(如 checkpoint、log writer) -
status为running/suspended/sleeping,比 MySQL 的Command更细粒度 - 注意权限:需
VIEW SERVER STATE权限,否则只能看到自己会话 - DMV 是内存快照,不保证绝对实时,但对运维排查已足够
跨平台统一思路:别依赖 GUI 工具的“当前会话”面板
很多 DBA 习惯点 Navicat 或 DBeaver 的“会话”标签页,但这背后仍是调用上述原生命令或视图——一旦权限配置不对、网络延迟高、或工具缓存未刷新,看到的就不是真实状态。
- 生产环境排查连接泄漏,优先手写 SQL 查底层视图,而非依赖 UI 显示
- 不同版本间字段名可能变化(例如 PostgreSQL 14 把
procpid改为pid),写监控脚本时务必确认目标版本 - 有些云数据库(如 AWS RDS MySQL)禁用了
information_schema.PROCESSLIST,但允许SHOW PROCESSLIST,权限策略更严格
真正难的不是写出那条 SELECT,而是理解每条记录背后的生命周期:连接何时建立、事务何时开启、语句何时阻塞、资源何时释放。这些细节藏在字段组合里,而不是单个函数调用中。











