PG中查询会话的视图pg_stat_activity

0    233    1

Tags:

👉 本文共约15328个字,系统预计阅读时间或需58分钟。

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 zonestate上一次被改变的时间
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这个后端的最近查询的标识符。 如果stateactive,这个字段显示当前正在执行的查询的标识符。 在所有其他状态,它显示执行的最后一个查询的标识符。 默认不计算查询标识符,因此该字段将为空,除非启用compute_query_id参数或配置了计算查询标识符的第三方模块。
query text这个后端最近查询的文本。如果stateactive,这个字段显示当前正在执行的查询。 在所有其他状态下,它显示上一个被执行的查询。默认情况下,查询文本会被截断至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_eventstate列是独立的。如果一个后端处于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类型的等待事件

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复