合 PG中查询会话的视图pg_stat_activity
Tags: PGPostgreSQLpg_stat_activity
pg_stat_activity
pg_stat_activity
视图每个服务器进程将有一行,显示与该进程当前活动相关的信息。
表 28.3. pg_stat_activity
视图
列类型描述 |
---|
datid oid 这个后端连接到的数据库的OID |
datname name 这个后端连接到的数据库的名称 |
pid integer 这个后端的进程 ID |
leader_pid integer 并行组组长的进程ID,如果该进程是并行查询工作者。如果该进程是一个并行组的组长或不参与并行查询,则为NULL 。 |
usesysid oid 登录到这个后端的用户的 OID |
usename name 登录到这个后端的用户的 OID |
application_name text 连接到这个后端的应用的名称 |
client_addr inet 连接到这个后端的客户端的 IP 地址。如果这个字段为空,它表示客户端通过服务器机器上的一个 Unix 套接字连接或者这是一个内部进程,如自动清理。 |
client_hostname text 已连接的客户端的主机名,由client_addr 的反向 DNS 查找报告。 这个字段将只对 IP 连接非空,并且只有 log_hostname被启用时才会非空。 |
client_port integer 客户端用于与此后端通信的TCP端口号,如果使用Unix套接字,则为-1 。如果该字段为空,它表示这是一个内部服务器进程。 |
backend_start timestamp with time zone 这个进程被启动的时间。对客户端后端来说,这就是客户端连接到服务器的时间。 |
xact_start timestamp with time zone 这个进程的当前事务被启动的时间,如果没有活动事务则为空。 如果当前查询是它的第一个事务,这一列等于query_start 列。 |
query_start timestamp with time zone 当前活动查询被开始的时间,如果state 不是active ,则为上一个查询开始的时间 |
state_change timestamp with time zone state 上一次被改变的时间 |
wait_event_type text 后端等待的事件类型,如果有的话;否则NULL。参见表 28.4。 |
wait_event text 如果后端当前正在等待,则等待事件名称,否则为NULL。参见表 28.5 到 表 28.13。 |
state text 这个后端的当前总体状态。可能的值为:active : 后端正在执行一个查询。idle : 后端正在等待一个新的客户端命令。idle in transaction : 后端在一个事务中,但是当前没有正在执行一个查询。idle in transaction (aborted) : 这个状态与 idle in transaction 相似,除了在该事务中的一个语句导致了一个错误。fastpath function call : 后端正在执行一个 fast-path 函数。disabled : 如果在这个后端中track_activities被禁用,则报告这个状态。 |
backend_xid xid 这个后端的顶层事务标识符,如果存在。 |
backend_xmin xid 当前后端的xmin 范围。 |
query_id bigint 这个后端的最近查询的标识符。 如果state 是active ,这个字段显示当前正在执行的查询的标识符。 在所有其他状态,它显示执行的最后一个查询的标识符。 默认不计算查询标识符,因此该字段将为空,除非启用compute_query_id参数或配置了计算查询标识符的第三方模块。 |
query text 这个后端最近查询的文本。如果state 为active ,这个字段显示当前正在执行的查询。 在所有其他状态下,它显示上一个被执行的查询。默认情况下,查询文本会被截断至1024个字节,这个值可以通过参数track_activity_query_size更改。 |
backend_type text 当前后端的类型。可能的类型为 autovacuum launcher , autovacuum worker , logical replication launcher , logical replication worker , parallel worker , background writer , client backend , checkpointer , archiver , startup , walreceiver , walsender and walwriter . 除此以外,由扩展注册的后台Worker可能有额外的类型。 |
注意
wait_event
和state
列是独立的。如果一个后端处于active
状态,它可能是也可能不是某个事件上的waiting
。如果状态是active
并且wait_event
为非空,它意味着一个查询正在被执行,但是它被阻塞在系统中某处。
表 28.4. 等待事件类型
等待事件类型 | 描述 |
---|---|
Activity | 服务器进程空闲。此事件类型表示在其主处理循环中等待活动的进程。 wait_event 将识别特定的等待点;参见表 28.5。 |
BufferPin | 服务器进程正在等待对数据缓冲的独占访问。 如果另一个进程持有一个打开的游标,该游标最后一次从相关缓冲区读取数据,则缓冲区销等待可能是漫长的。 参见表 28.6。 |
Client | 服务器进程正在等待连接到用户应用程序的套接字上的活动。 因此,服务器预计发生一些独立于其内部进程的事情。wait_event 将识别特定的等待点;参见表 28.7。 |
Extension | 服务器进程正在等待扩展模块定义的某个条件。参见表 28.8。 |
IO | 服务器进程正在等待一个I/O操作完成。wait_event 将识别特定的等待点;参见表 28.9。 |
IPC | 服务器进程正在等待与另一个服务器进程进行交互。wait_event 将识别特定的等待点;参见表 28.10。 |
Lock | 服务器进程正在等待一个重量级锁。重量级锁,也称为锁管理器锁或简单锁,主要保护表等SQL可见对象。 然而,它们也用于确保某些内部操作的互斥,例如关系扩展。wait_event 将识别等待的锁的类型;参见表 28.11。 |
LWLock | 服务器进程正在等待一个轻量级锁。大多数这样的锁保护共享内存中的特定数据结构。 wait_event 将包含标识轻量级锁用途的名称。 (有些锁有特定的名称;其他锁是一组锁的一部分,每个锁具有类似的目的。)参见表 28.12。 |
Timeout | 服务器进程正在等待超时过期。wait_event 将识别特定的等待点;参见表 28.13。 |
表 28.5. Activity
类型的等待事件