更新时间:2024-06-29 GMT+08:00

PGXC_STAT_ACTIVITY

PGXC_STAT_ACTIVITY视图显示当前集群下所有CN的当前用户查询相关的信息。

表1 PGXC_STAT_ACTIVITY字段

名称

类型

描述

coorname

text

当前集群下的CN名称。

datid

oid

用户会话在后端连接到的数据库OID。

datname

name

用户会话在后端连接到的数据库名称。

pid

bigint

后端线程ID。

lwtid

integer

后端线程的轻量级线程号。

usesysid

oid

登录此后端的用户OID。

usename

name

登录此后端的用户名。

application_name

text

连接到此后端的应用名。

client_addr

inet

连接到此后端的客户端的IP地址。 如果此字段是null,则表示通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。

client_hostname

text

客户端的主机名,此字段是通过client_addr的反向DNS查找得到。仅在启动log_hostname且使用IP连接时才非空。

client_port

integer

客户端用于与后端通讯的TCP端口号,如果使用Unix套接字,则为-1。

backend_start

timestamp with time zone

后端进程启动时间,即客户端连接服务器的时间。

xact_start

timestamp with time zone

当前事务的启动时间,如果没有事务是活跃的,则为null。如果当前查询是首个事务,则这列等同于query_start列。

query_start

timestamp with time zone

开始当前活跃查询的时间, 如果state的值不是active,则这个值是上一个查询的开始时间。

state_change

timestamp with time zone

状态最后一次改变的时间。

waiting

boolean

如果后端当前正等待锁或者等待节点则为t,否则为f。

enqueue

text

语句当前排队状态。可能值是:

  • waiting in global queue:表示语句在全局并发队列排队中。
  • waiting in respool queue:表示语句在资源池排队中,包含以下两类场景:
    1. 动态负载开启的情况下,简单作业数量超过了快车道并发上限max_dop。
    2. 动态负载关闭的情况下,简单作业数量超过了快车道并发上限max_dop或者复杂作业数量超过了慢车道并发上限。
  • waiting in ccn queue:表示作业在CCN排队中,包含全局内存排队和慢车道内存和并发排队。
  • 空或no waiting queue:表示语句正在运行。

state

text

后端当前总体状态。可能值是:

  • active:后端正在执行一个查询。
  • idle:后端正在等待一个新的客户端命令。
  • idle in transaction:后端在事务中,但事务中没有语句在执行。
  • idle in transaction (aborted):后端在事务中,但事务中有语句执行失败。
  • fastpath function call:后端正在执行一个fast-path函数。
  • disabled:如果后端禁用track_activities,则报告此状态。
说明:

只有系统管理员能查看到自己账户所对应的会话状态。其他账户的state信息为空。

resource_pool

name

用户使用的资源池。

stmt_type

text

用户语句的语句类型。

query_id

bigint

查询语句的ID。

query

text

此后端的最新查询。如果state状态是active(活跃的),此字段显示当前正在执行的查询。其他情况表示上一个查询。

connection_info

text

json格式字符串,记录当前连接数据库的驱动类型、驱动版本号、当前驱动的部署路径、进程属主用户等信息(参见connection_info)。

应用实例

查看当前处于阻塞状态的查询语句。

1
SELECT datname,usename,state,query FROM PGXC_STAT_ACTIVITY WHERE waiting = true;

查看快照线程的工作状态。

1
SELECT application_name,backend_start,state_change,state,query FROM PGXC_STAT_ACTIVITY WHERE application_name='WDRSnapshot';

查看正在运行的查询语句。

1
2
3
4
5
6
7
8
9
SELECT datname,usename,state,pid FROM PGXC_STAT_ACTIVITY;
 datname  | usename | state  |       pid
----------+---------+--------+-----------------
 gaussdb | Ruby    | active | 140298793514752
 gaussdb | Ruby    | active | 140298718004992
 gaussdb | Ruby    | idle   | 140298650908416
 gaussdb | Ruby    | idle   | 140298625742592
 gaussdb | dbadmin | active | 140298575406848
(5 rows)

查看指定数据库postgres上已使用的会话连接数。其中1表示数据库postgres上已使用的会话连接数。

1
2
3
4
5
SELECT COUNT(*) FROM PGXC_STAT_ACTIVITY WHERE DATNAME='postgres';
 count 
-------
     1
(1 row)