pg_stat_activity是云原生数据仓库AnalyticDB PostgreSQL版用来定位实例当前执行查询的系统视图,每行显示一个服务器进程同时详细描述与之关联的用户会话和查询,可以有效帮助用户分析排查当前运行的SQL任务以及异常问题。

注意事项

只有superuser用户或者是正在报告的进程的拥有者时,才可以使用pg_stat_activity视图。

pg_stat_activity视图的字段描述

字段类型描述
datidoid数据库OID。
datnamename数据库名称。
procpidinteger后端进程的进程ID。
说明 只有4.3版本支持procpid字段。
pidinteger后端进程的进程ID。
说明 只有6.0版本支持pid字段。
sess_idinteger会话ID。
usesysidoid用户OID。
usenamename用户名。
current_querytext当前正在执行的查询。默认情况下,查询文本最多显示1024个字符,超出部分会被截断,如需显示更多字符,可以通过参数track_activity_query_size配置。
说明 只有4.3版本支持current_query字段。
querytext最近查询的文本。如果stateactive,显示当前正在执行的查询。在其他状态下,显示上一个执行的查询。 默认情况下,查询文本最多显示1024个字符,超出部分会被截断,如需显示更多字符,可以通过参数track_activity_query_size配置。
说明 只有6.0版本支持query字段。
waitingboolean如果当前SQL在锁等待,值为True,否则为False。
query_startdatetime当前活动查询开始执行的时间。如果state不是active,显示上一个查询的开始时间。
backend_startdatetime当前后端进程的开始时间。
backend_xidxid后端进程当前的事务ID。
backend_xminxid后端的xmin范围。
client_addrinet客户端的IP地址。如果client_addr为空,表示客户端通过服务器上的Unix套接字连接,或者表示进程是内部进程(例如AUTOVACUUM)。
client_portinteger客户端和后端通信的TCP端口号。如果使用Unix套接字,值为-1。
client_hostnametext客户端主机名,通过client_addr的反向DNS查找报告。
application_nametext客户端应用名。
xact_starttimestamptz当前事务的启动时间。如果没有活动事务,值为空。如果当前查询是第一个事务,值与query_start的值相同。
waiting_reasontext当前执行等待的原因,可能是等锁或者等待节点间数据的复制。
statetext后端的当前状态,取值范围:active,idle,idle in transaction,idle in transaction (aborted),fastpath function call,disabled。
说明 只有6.0版本支持state字段。
state_changetimestampz上次state状态切换的时间。
说明 只有6.0版本支持state_change字段。
rsgidoid资源组OID。
rsgnametext资源组名称。
rsgqueuedurationinterval对于排队查询,查询排队的总时间。

示例

您可以通过以下SQL来查询odps_in用户在近30分钟内发起的,且当前还没执行完的查询。

select * from pg_stat_activity where xact_start < now() - interval '30 min' and waiting='f' and usename='odps_in';