合 PG中有关会话进程的几个函数
Tags: PGPostgreSQL函数
简介
pg_stat_get_activity
是pg_stat_activity
视图的底层函数, 它返回一个行集合,其中包含有关每个后端进程所有可用的信息。有时只获得该信息的一个子集可能会更方便。 在那些情况中,可以使用一组更老的针对每个后端的统计访问函数,这些显示在表 27.31中。 这些访问函数使用一个后端 ID 号,范围从 1 到当前活动后端数目。 函数pg_stat_get_backend_idset
提供了一种方便的方法为每个活动后端产生一行来调用这些函数。 例如,要显示PID以及所有后端当前的查询:
1 2 3 | SELECT pg_stat_get_backend_pid(s.backendid) AS pid, pg_stat_get_backend_activity(s.backendid) AS query FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS s; |
函数描述 |
---|
pg_stat_get_backend_idset () → setof integer 返回当前活动后端ID号的集合(从1到活动后端数)。 |
pg_stat_get_backend_activity ( integer ) → text 返回此后端最近查询的文本。 |
pg_stat_get_backend_activity_start ( integer ) → timestamp with time zone 返回后端最近一次查询开始的时间。 |
pg_stat_get_backend_client_addr ( integer ) → inet 返回连接到此后端的客户端的IP地址。 |
pg_stat_get_backend_client_port ( integer ) → integer 返回客户端用于通信的TCP端口号。 |
pg_stat_get_backend_dbid ( integer ) → oid 返回此后端连接的数据库的OID。 |
pg_stat_get_backend_pid ( integer ) → integer 返回此后端进程ID。 |
pg_stat_get_backend_start ( integer ) → timestamp with time zone 返回该进程开始的时间。 |
pg_stat_get_backend_userid ( integer ) → oid 返回登录到此后端的用户的OID。 |
pg_stat_get_backend_wait_event_type ( integer ) → text 如果后端当前正在等待,返回等待事件类型名称,否则返回NULL。 详请参见表 27.4。 |
pg_stat_get_backend_wait_event ( integer ) → text 如果后端当前正在等待,则返回等待事件名称,否则为NULL。 参见 表 27.5 到 表 27.13。 |
pg_stat_get_backend_xact_start ( integer ) → timestamp with time zone 返回后端当前事务开始的时间。 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | SELECT procpid, START, now() - START AS lap, current_query, -- count() over() count_num, t2.rolname,t3.rsqname, ip FROM ( SELECT backendid, pg_stat_get_backend_userid(S.backendid) as uid, pg_stat_get_backend_client_addr(S.backendid) as ip, pg_stat_get_backend_pid (S.backendid) AS procpid, pg_stat_get_backend_activity_start (S.backendid) AS START, pg_stat_get_backend_activity (S.backendid) AS current_query FROM ( SELECT pg_stat_get_backend_idset () AS backendid ) AS S ) AS t1 left join pg_authid t2 on t1.uid=t2.oid left join pg_resqueue t3 on t2.rolresqueue=t3.oid WHERE current_query!= '<IDLE>' and rolname = 'gpadmin' ORDER BY lap DESC; |