pg_stat_activity是adbpg用来定位实例当前执行查询的系统视图,每行显示一个服务器进程同时详细描述与之关联的用户会话和查询。这些列报告当前查询上可用的数据,除非参数stats_command_string被关闭。此外,只有在检查视图的用户是超级用户或者是正在报告的进程的拥有者时,这些列才可见。

列current_query中存储的查询文本字符串的最大长度可以通过服务器配置参数pgstat_track_activity_query_size来控制。

名称 类型 描述
datid oid 数据库OID,可通过pg_database视图获取。
datname name 数据库名称。
pid integer 服务进程的进程ID。
sess_id integer 会话ID。
usesysid oid 角色ID,可通过pg_authid视图获取。
usename name 角色名。
current_query text 进程正在执行的当前查询。
waiting boolean 如果正在等待一个锁则为true,否则为false。
query_start timestamptz 查询开始执行的时间。
backend_start timestamptz 后台进程开始的时间。
client_addr inet 客户端地址。
client_port integer 客户端端口。
applicaton_name text 客户端应用名。
xact_start timestamptz 事务开始时间。
waiting_reason text 服务进程正在等待的原因。

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

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