GreenPlum中查询会话的视图pg_stat_activity
Tags: GreenPlumpg_stat_activity查会话锁
pg_stat_activity
视图pg_stat_activity每行显示一个服务器进程同时详细描述与之关联的用户会话和查询。 这些列报告当前查询上可用的数据,除非参数stats_command_string被关闭。 此外,只有在检查视图的用户是超级用户或者是正在报告的进程的拥有者时,这些列才可见。
列current_query中存储的查询文本字符串的最大长度可以通过服务器配置参数track_activity_query_size来控制。
列 | 类型 | 参考 | 描述 |
---|---|---|---|
datid | oid | pg_database.oid | 数据库OID |
datname | name | 数据库名称 | |
pid | integer | 服务进程的进程ID | |
sess_id | integer | 会话ID | |
usesysid | oid | pg_authid.oid | 登录此后端的用户的OID |
usename | name | 登录到此后端的用户的名称 | |
application_name | text | 连接到此后端的应用程序的名称 | |
client_addr | inet | 连接到此后端的客户端的IP地址。 如果此字段为空,则表示客户端通过服务器计算机上的Unix套接字连接,或者这是内部进程(如autovacuum)。 | |
client_hostname | text | 客户端的主机名,由client_addr的反向DNS查找报告。 对于IP连接,此字段仅为非null,并且仅在启用log_hostname时才为空。 | |
client_port | integer | 客户端用于与此后端通信的TCP端口号,如果使用Unix套接字,则为-1 | |
backend_start | timestamptz | 后端进程启动时间 | |
xact_start | timestamptz | 事务开始时间 | |
query_start | timestamptz | 查询开始执行时间 | |
state_change | timestampz | 状态最后一次改变的时间 | |
waiting | boolean | 如果等待一个锁为True,否则为false | |
state | text | 此后端的当前整体状态。可能的值是:active: 后端正在执行查询。idle: 后端正在等待新的客户端命令。idle in transaction: 后端处于事务中,但当前未执行查询。idle in transaction (aborted): 此状态类似于事务中的空闲,除了事务中的一个语句导致错误。fastpath function call: 后端正在执行快速路径功能。disabled: 如果在此后端禁用track_activities,则报告此状态。 | |
query | text | 此后端的最新查询的文本。 如果状态为活跃,则此字段显示当前正在执行的查询。 在所有其他状态中,它显示最后执行的查询。 | |
waiting_reason | text | 服务器进程正在等待的原因。 值可以是:lock, replication或resgroup | |
rsgid | oid | pg_resgroup.oid | 资源组OID |
rsgname | text | pg_resgroup.rsgname | 资源组名称 |
rsgqueueduration | interval | 对于排队查询,查询排队的总时间。 |
常用SQL
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 pgsa.pid, pgsa.sess_id, pgsa.client_port, pgsa.datname AS datname, pgsa.usename AS usename, (SELECT nb.rrrsqname from gp_toolkit.gp_resq_role nb where nb.rrrolname=pgsa.usename) rsqname, pgsa.client_addr client_addr, pgsa.application_name AS application_name, pgsa.state AS state, pgsa.waiting, pgsa.waiting_reason, pgsa.backend_start AS backend_start, pgsa.xact_start AS xact_start, state_change, pgsa.query_start AS query_start, TRUNC(EXTRACT( epoch FROM (NOW() - pgsa.xact_start) )) AS xact_stay, trunc(EXTRACT( epoch FROM (NOW() - pgsa.query_start) )) AS query_stay, REPLACE(pgsa.QUERY, chr(10), ' ') AS QUERY, yc_filesize_GB, yc_numfiles FROM pg_stat_activity AS pgsa -- 溢出文件大小查询 LEFT JOIN (select pid,trunc(sum(size)/1024/1024/1024) as yc_filesize_GB,sum(numfiles) as yc_numfiles from gp_toolkit.gp_workfile_usage_per_query nb group by pid) as d ON pgsa.pid=d.pid WHERE pgsa.state not in ( 'idle' ,'idle in transaction','idle in transaction (aborted)' ) ORDER BY query_stay,xact_stay DESC LIMIT 100; |