要验证 PostgreSQL 数据库是否有业务在连接或使用,最直接、最核心的方法是查询系统视图 pg_stat_activity。它能提供当前所有数据库连接的实时快照,帮助你精准判断业务活动状态。
psql -h xxx.xxx.xxx.xxx -p 5432 -U postgres -d postgres
🔍 核心方法:查询 pg_stat_activity
pg_stat_activity 视图记录了每个连接的详细信息,包括连接用户、客户端地址、当前执行的SQL语句以及连接状态。你可以通过以下SQL查询来全面了解连接情况:
-
按状态统计连接数
这是最快速的概览方式,可以清晰地看到有多少连接是真正在执行业务,有多少是空闲的。SELECT state, count(*) FROM pg_stat_activity GROUP BY state;active: 正在执行SQL查询的连接,代表真实的业务活动。idle: 连接已建立但未在执行任何操作,通常由应用的连接池维持。idle in transaction: 连接在一个未提交的事务中等待,可能持有锁并消耗资源,需要关注。
-
查看活跃的业务连接详情
如果想确认具体是哪些业务在运行,可以查询所有活跃连接的详细信息。SELECTpid,usename AS 用户名,client_addr AS 客户端地址,application_name AS 应用名称,state AS 状态,query_start AS 查询开始时间,query AS 当前查询 FROM pg_stat_activity WHERE state = 'active' ORDER BY query_start;通过
application_name和query字段,你可以直接识别出是哪个应用程序、在执行什么SQL,从而确认业务是否正在使用数据库。
