在运维工作中,如何验证pg数据库,有没有业务在连接或使用?

要验证 PostgreSQL 数据库是否有业务在连接或使用,最直接、最核心的方法是查询系统视图 pg_stat_activity。它能提供当前所有数据库连接的实时快照,帮助你精准判断业务活动状态。

psql -h xxx.xxx.xxx.xxx -p 5432 -U postgres -d postgres

🔍 核心方法:查询 pg_stat_activity

pg_stat_activity 视图记录了每个连接的详细信息,包括连接用户、客户端地址、当前执行的SQL语句以及连接状态。你可以通过以下SQL查询来全面了解连接情况:

  1. 按状态统计连接数
    这是最快速的概览方式,可以清晰地看到有多少连接是真正在执行业务,有多少是空闲的。

    SELECT state, count(*)
    FROM pg_stat_activity
    GROUP BY state;
    
    • active: 正在执行SQL查询的连接,代表真实的业务活动
    • idle: 连接已建立但未在执行任何操作,通常由应用的连接池维持。
    • idle in transaction: 连接在一个未提交的事务中等待,可能持有锁并消耗资源,需要关注。
  2. 查看活跃的业务连接详情
    如果想确认具体是哪些业务在运行,可以查询所有活跃连接的详细信息。

    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_namequery 字段,你可以直接识别出是哪个应用程序、在执行什么SQL,从而确认业务是否正在使用数据库。