pg_stat_activity是云原生数据仓库AnalyticDB PostgreSQL版用来定位实例当前执行查询的系统视图,每行显示一个服务器进程同时详细描述与之关联的用户会话和查询,可以有效帮助用户分析排查当前运行的SQL任务以及异常问题。
注意事项
只有superuser用户或者是正在报告的进程的拥有者时,才可以使用pg_stat_activity视图。
pg_stat_activity视图的字段描述
字段 | 类型 | 描述 |
---|---|---|
datid | oid | 数据库OID。 |
datname | name | 数据库名称。 |
procpid | integer | 后端进程的进程ID。 说明 只有4.3版本支持procpid字段。 |
pid | integer | 后端进程的进程ID。 说明 只有6.0版本支持pid字段。 |
sess_id | integer | 会话ID。 |
usesysid | oid | 用户OID。 |
usename | name | 用户名。 |
current_query | text | 当前正在执行的查询。默认情况下,查询文本最多显示1024个字符,超出部分会被截断,如需显示更多字符,可以通过参数track_activity_query_size配置。 说明 只有4.3版本支持current_query字段。 |
query | text | 最近查询的文本。如果state 为active ,显示当前正在执行的查询。在其他状态下,显示上一个执行的查询。 默认情况下,查询文本最多显示1024个字符,超出部分会被截断,如需显示更多字符,可以通过参数track_activity_query_size配置。说明 只有6.0版本支持query字段。 |
waiting | boolean | 如果当前SQL在锁等待,值为True,否则为False。 |
query_start | datetime | 当前活动查询开始执行的时间。如果state 不是active ,显示上一个查询的开始时间。 |
backend_start | datetime | 当前后端进程的开始时间。 |
backend_xid | xid | 后端进程当前的事务ID。 |
backend_xmin | xid | 后端的xmin范围。 |
client_addr | inet | 客户端的IP地址。如果client_addr 为空,表示客户端通过服务器上的Unix套接字连接,或者表示进程是内部进程(例如AUTOVACUUM)。 |
client_port | integer | 客户端和后端通信的TCP端口号。如果使用Unix套接字,值为-1。 |
client_hostname | text | 客户端主机名,通过client_addr 的反向DNS查找报告。 |
application_name | text | 客户端应用名。 |
xact_start | timestamptz | 当前事务的启动时间。如果没有活动事务,值为空。如果当前查询是第一个事务,值与query_start 的值相同。 |
waiting_reason | text | 当前执行等待的原因,可能是等锁或者等待节点间数据的复制。 |
state | text | 后端的当前状态,取值范围:active,idle,idle in transaction,idle in transaction (aborted),fastpath function call,disabled。 说明 只有6.0版本支持state字段。 |
state_change | timestampz | 上次state 状态切换的时间。说明 只有6.0版本支持state_change字段。 |
rsgid | oid | 资源组OID。 |
rsgname | text | 资源组名称。 |
rsgqueueduration | interval | 对于排队查询,查询排队的总时间。 |
示例
您可以通过以下SQL来查询odps_in用户在近30分钟内发起的,且当前还没执行完的查询。
select * from pg_stat_activity where xact_start < now() - interval '30 min' and waiting='f' and usename='odps_in';