合 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
类型的等待事件
Activity 等待事件 | 描述 |
---|---|
ArchiverMain | 在归档进程的主循环中等待。 |
AutoVacuumMain | 在自动清理启动过程的主循环中等待。 |
BgWriterHibernate | 在后台写进程中等待,休眠状态。 |
BgWriterMain | 在后台写进程主循环中等待。 |
CheckpointerMain | 在校验指针进程的主循环中等待。 |
LogicalApplyMain | 在逻辑复制应用进程的主循环中等待。 |
LogicalLauncherMain | 在逻辑复制启动器进程的主循环中等待。 |
PgStatMain | 在统计收集器进程的主循环中等待。 |
RecoveryWalStream | 流恢复期间,在启动进程主循环等待WAL到达。 |
SysLoggerMain | 在syslogger进程的主循环中等待。 |
WalReceiverMain | 在WAL接收器进程的主循环中等待。 |
WalSenderMain | 在WAL发送者进程的主循环中等待。 |
WalWriterMain | 在WAL写入进程的主循环中等待。 |
表 28.6. BufferPin
类型的等待事件
BufferPin 等待事件 | 描述 |
---|---|
BufferPin | 等待获得缓冲区上的独占销。 |
表 28.7. Client
类型的等待事件
Client 等待事件 | 描述 |
---|---|
ClientRead | 等待从客户端读取数据。 |
ClientWrite | 等待写入数据到客户端。 |
GSSOpenServer | 在建立GSSAPI会话时等待从客户端读取数据。 |
LibPQWalReceiverConnect | 在WAL接收器等待与远程服务器建立连接。 |
LibPQWalReceiverReceive | 在WAL接收器中等待从远程服务器接收数据。 |
SSLOpenServer | 在尝试连接时等待SSL。 |
WalSenderWaitForWAL | 在WAL发送器进程中等待WAL被刷新。 |
WalSenderWriteData | 在WAL发送器进程中处理WAL接收器的回复时,等待任何活动。 |
表 28.8. Extension
类型的等待事件
Extension 等待事件 | 描述 |
---|---|
Extension | 在扩展中等待。 |
表 28.9. IO
类型的等待事件
IO 等待事件 | 描述 |
---|---|
BaseBackupRead | 等待基础备份从文件中读取。 |
BufFileRead | 等待从缓冲文件中读取。 |
BufFileWrite | 等待对缓冲文件的写入。 |
BufFileTruncate | 等待一个缓冲文件被截断。 |
ControlFileRead | 等待读取pg_control 文件。 |
ControlFileSync | 等待pg_control 文件到达持久存储。 |
ControlFileSyncUpdate | 等待更新pg_control 文件以达到持久存储。 |
ControlFileWrite | 等待写入pg_control 文件。 |
ControlFileWriteUpdate | 等待写入更新pg_control 文件。 |
CopyFileRead | 在文件复制操作期间等待读取。 |
CopyFileWrite | 在文件拷贝操作期间等待写入。 |
DSMFillZeroWrite | 等待用零填充动态共享内存备份(backing)文件。 |
DataFileExtend | 等待关系数据文件被扩展。 |
DataFileFlush | 等待关系数据文件达到持久存储。 |
DataFileImmediateSync | 等待关系数据文件到持久存储的立即同步。 |
DataFilePrefetch | 等待关系数据文件的异步预取。 |
DataFileRead | 等待对关系数据文件的读取。 |
DataFileSync | 等待对关系数据文件的更改达到持久存储。 |
DataFileTruncate | 等待关系数据文件被截断。 |
DataFileWrite | 等待对关系数据文件的写入。 |
LockFileAddToDataDirRead | 在向数据目录锁文件中添加一行时等待读取。 |
LockFileAddToDataDirSync | 等待数据到达持久存储,同时向数据目录锁文件添加一行。 |
LockFileAddToDataDirWrite | 在向数据目录锁文件中添加一行时等待写操作。 |
LockFileCreateRead | 创建数据目录锁文件时等待读取。 |
LockFileCreateSync | 在创建数据目录锁文件时等待数据到达持久存储。 |
LockFileCreateWrite | 在创建数据目录锁文件时等待写操作。 |
LockFileReCheckDataDirRead | 在重新检查数据目录锁文件期间等待读取。 |
LogicalRewriteCheckpointSync | 等待逻辑重写映射到在检查点到达持久存储。 |
LogicalRewriteMappingSync | 在逻辑重写期间等待映射数据到达持久存储 |
LogicalRewriteMappingWrite | 在逻辑重写期间等待映射数据的写入。 |
LogicalRewriteSync | 等待逻辑重写映射到达持久存储。 |
LogicalRewriteTruncate | 等待在逻辑重写期间截断映射数据。 |
LogicalRewriteWrite | 等待逻辑重写映射的写入。 |
RelationMapRead | 等待关系映射文件的读取。 |
RelationMapSync | 等待关系映射文件到达持久存储。 |
RelationMapWrite | 等待对关系映射文件的写入。 |
ReorderBufferRead | 在重新排序缓冲区管理期间等待读取。 |
ReorderBufferWrite | 在重新排序缓冲区管理期间等待写操作。 |
ReorderLogicalMappingRead | 在重新排序缓冲区管理期间等待读取逻辑映射。 |
ReplicationSlotRead | 等待从复制槽位控制文件读取。 |
ReplicationSlotRestoreSync | 等待复制槽控制文件到达持久存储,同时将其恢复到内存中。 |
ReplicationSlotSync | 等待复制槽控制文件到达持久存储。 |
ReplicationSlotWrite | 等待对复制槽控制文件的写入。 |
SLRUFlushSync | 在检查点或数据库关闭期间等待SLRU数据到达持久存储。 |
SLRURead | 等待读取SLRU页面。 |
SLRUSync | 在写页面后等待SLRU数据到达持久存储。 |
SLRUWrite | 等待SLRU页面的写入。 |
SnapbuildRead | 等待读取序列化的历史目录快照。 |
SnapbuildSync | 等待序列化历史目录快照到达持久存储。 |
SnapbuildWrite | 等待串行历史目录快照的写入。 |
TimelineHistoryFileSync | 等待通过流复制接收的时间线历史文件到达持久存储。 |
TimelineHistoryFileWrite | 等待通过流复制接收的时间线历史文件的写入。 |
TimelineHistoryRead | 等待读取时间线历史文件。 |
TimelineHistorySync | 等待新创建的时间线历史文件到达持久存储。 |
TimelineHistoryWrite | 等待写入新创建的时间线历史文件。 |
TwophaseFileRead | 等待读取两阶段状态文件。 |
TwophaseFileSync | 等待两阶段状态文件到达持久存储。 |
TwophaseFileWrite | 等待对两阶段状态文件的写入。 |
WALBootstrapSync | 在引导过程中等待WAL达到持久存储。 |
WALBootstrapWrite | 在引导过程中等待WAL页面的写入。 |
WALCopyRead | 通过复制一个已有WAL段来创建一个新的WAL段时等待读取。 |
WALCopySync | 等待通过复制一个已有WAL段到持久存储来创建一个新的WAL段。 |
WALCopyWrite | 通过复制一个已有WAL段来创建一个新的WAL段时等待写入。 |
WALInitSync | 等待一个新初始化的WAL文件到持久存储。 |
WALInitWrite | 在初始化一个新的WAL文件时等待写入。 |
WALRead | 等待WAL文件的读取。 |
WALSenderTimelineHistoryRead | 在walsender时间线命令期间等待从时间线历史文件读取。 |
WALSync | 等待WAL文件到达持久存储。 |
WALSyncMethodAssign | 等待数据到达持久存储,同时分配一个新的WAL同步方法。 |
WALWrite | 等待写入WAL文件。 |
LogicalChangesRead | 等待从逻辑更改文件中读取。 |
LogicalChangesWrite | 等待向逻辑更改文件中写入。 |
LogicalSubxactRead | 等待从逻辑subxact文件中读取 |
LogicalSubxactWrite | 等待向逻辑subxact文件中写入。 |
表 28.10. IPC
类型的等待事件