28.2. 统计信息收集器

PostgreSQL 的*“统计收集器” *是一个子系统,支持收集和报告有关服务器活动的信息。目前,收集器可以以磁盘块和单个行的方式计算对表和索引的访问。它还跟踪每个表中的总行数,以及有关每个表的清理和分析操作的信息。它还可以计算对用户定义函数的调用以及每个函数所花费的总时间。

PostgreSQL 还支持报告有关当前系统中正在发生的确切情况的动态信息,例如其他服务器进程当前正在执行的确切命令以及系统中存在哪些其他连接。此功能独立于收集器过程。

28 .2.1. 统计信息收集配置

由于收集统计信息会增加查询执行的开销,因此可以将系统配置为收集或不收集信息。这由通常在postgresql.conf中设置的配置参数控制。 (有关设置配置参数的详细信息,请参见Chapter 19。)

参数track_activities可以监视任何服务器进程正在执行的当前命令。

参数track_counts控制是否收集有关表和索引访问的统计信息。

参数track_functions允许跟踪用户定义功能的使用。

参数track_io_timing允许监视块的读写时间。

通常,这些参数是在postgresql.conf中设置的,以便将它们应用于所有服务器进程,但是可以使用SET命令在各个会话中将其打开或关闭。 (为防止普通用户向 Management 员隐藏活动,仅允许超级用户使用SET更改这些参数.)

统计信息收集器通过临时文件将收集的信息传输到其他 PostgreSQL 进程。这些文件存储在stats_temp_directory参数命名的目录中,默认情况下为pg_stat_tmp。为了获得更好的性能,可以将stats_temp_directory指向基于 RAM 的文件系统,从而降低了物理 I/O 要求。当服务器完全关闭时,统计数据的永久副本存储在pg_stat子目录中,以便可以在服务器重新启动时保留统计信息。当在服务器启动时执行恢复时(例如在立即关闭,服务器崩溃和时间点恢复之后),所有统计信息计数器将重置。

28 .2.2. 查看统计

Table 28.1中列出的几个 sched 义视图可用于显示系统的当前状态。 Table 28.2中还列出了其他一些视图,以显示统计信息收集的结果。或者,可以使用基础统计功能构建自定义视图,如Section 28.2.3中所述。

使用统计信息监视收集的数据时,重要的是要意识到信息不会立即更新。每个服务器进程都将在闲置之前将新的统计计数传输到收集器;因此仍在进行的查询或事务不会影响显示的总数。另外,收集器本身最多每PGSTAT_STAT_INTERVAL毫秒(500 毫秒,除非在构建服务器时进行了更改)发出一次新报告。因此,显示的信息落后于实际活动。但是,由track_activities收集的当前查询信息始终是最新的。

另一个重要的一点是,当服务器进程被要求显示任何这些统计信息时,它首先获取收集器进程发出的最新报告,然后 continue 将此快照用于所有统计视图和功能,直到其当前事务结束为止。因此,只要您 continue 当前事务,统计信息就会显示静态信息。类似地,当在事务中首次请求任何此类信息时,将收集有关所有会话的当前查询的信息,并且在整个事务中将显示相同的信息。这是一个功能,而不是错误,因为它使您可以对统计信息执行多个查询并关联结果,而不必担心数字在您下方变化。但是,如果您想在每个查询中看到新结果,请确保在任何事务块之外进行查询。或者,您可以调用pg_stat_clear_snapshot(),这将丢弃当前事务的统计信息快照(如果有)。下次使用统计信息将导致获取新快照。

事务还可以在视图pg_stat_xact_all_tablespg_stat_xact_sys_tablespg_stat_xact_user_tablespg_stat_xact_user_functions中查看其自己的统计信息(尚未传输到收集器)。这些数字与上面所述不符;相反,它们在整个 Transaction 过程中不断更新。

表 28.1. 动态统计数据视图

View NameDescription
pg_stat_activity 每个服务器进程一行,显示与该进程的当前活动有关的信息,例如状态和当前查询。有关详情,请参见pg_stat_activity
pg_stat_replication 每个 WAL 发送方进程一行,显示有关复制到该发送方连接的备用服务器的统计信息。有关详情,请参见pg_stat_replication
pg_stat_wal_receiver 仅一行,显示有关来自该接收器的连接服务器的 WAL 接收器的统计信息。有关详情,请参见pg_stat_wal_receiver
pg_stat_subscription 每个订阅至少有一行,显示有关订阅工作程序的信息。有关详情,请参见pg_stat_subscription
pg_stat_ssl 每个连接(常规和复制)一行,显示有关此连接上使用的 SSL 的信息。有关详情,请参见pg_stat_ssl
pg_stat_progress_vacuum 每个运行VACUUM的后端(包括自动清理工作进程)的一行,显示当前进度。参见Section 28.4.1

表 28.2. 收集的统计数据视图

View NameDescription
pg_stat_archiver 仅一行,显示有关 WAL 归档程序过程活动的统计信息。有关详情,请参见pg_stat_archiver
pg_stat_bgwriter 仅一行,显示有关后台编写器进程活动的统计信息。有关详情,请参见pg_stat_bgwriter
pg_stat_database 每个数据库一行,显示数据库范围的统计信息。有关详情,请参见pg_stat_database
pg_stat_database_conflicts 每个数据库一行,显示有关由于备用服务器上的恢复冲突而导致的查询取消的全数据库范围统计信息。有关详情,请参见pg_stat_database_conflicts
pg_stat_all_tables 当前数据库中每个表的一行,显示有关对该特定表的访问的统计信息。有关详情,请参见pg_stat_all_tables
pg_stat_sys_tables 除仅显示系统表外,与pg_stat_all_tables相同。
pg_stat_user_tables 除仅显示用户表外,与pg_stat_all_tables相同。
pg_stat_xact_all_tables 类似于pg_stat_all_tables,但是统计当前事务中迄今为止采取的动作(尚未*被包含在pg_stat_all_tables和相关视图中)。此视图中不存在活动行数和死行数以及真空和分析操作的列。
pg_stat_xact_sys_tables 除仅显示系统表外,与pg_stat_xact_all_tables相同。
pg_stat_xact_user_tables 除仅显示用户表外,与pg_stat_xact_all_tables相同。
pg_stat_all_indexes 当前数据库中每个索引的一行,显示有关对该特定索引的访问的统计信息。有关详情,请参见pg_stat_all_indexes
pg_stat_sys_indexes pg_stat_all_indexes相同,除了只显示系统表上的索引。
pg_stat_user_indexes pg_stat_all_indexes相同,除了只显示用户表上的索引。
pg_statio_all_tables 当前数据库中每个表的一行,显示有关该特定表的 I/O 的统计信息。有关详情,请参见pg_statio_all_tables
pg_statio_sys_tables 除仅显示系统表外,与pg_statio_all_tables相同。
pg_statio_user_tables 除仅显示用户表外,与pg_statio_all_tables相同。
pg_statio_all_indexes 当前数据库中每个索引的一行,显示有关该特定索引的 I/O 的统计信息。有关详情,请参见pg_statio_all_indexes
pg_statio_sys_indexes pg_statio_all_indexes相同,除了只显示系统表上的索引。
pg_statio_user_indexes pg_statio_all_indexes相同,除了只显示用户表上的索引。
pg_statio_all_sequences 当前数据库中每个序列的一行,显示有关该特定序列的 I/O 的统计信息。有关详情,请参见pg_statio_all_sequences
pg_statio_sys_sequences pg_statio_all_sequences相同,除了只显示系统序列。 (当前未定义系统序列,因此此视图始终为空.)
pg_statio_user_sequences pg_statio_all_sequences相同,除了只显示用户序列。
pg_stat_user_functions 每个跟踪功能的一行,显示有关该功能执行的统计信息。有关详情,请参见pg_stat_user_functions
pg_stat_xact_user_functions pg_stat_user_functions相似,但仅统计当前 Transaction 期间的呼叫(尚未包含在pg_stat_user_functions中)。

每个索引的统计信息对于确定正在使用的索引以及索引的有效性特别有用。

pg_statio_视图主要用于确定缓冲区高速缓存的有效性。当实际的磁盘读取次数远小于缓冲区命中次数时,则高速缓存可以满足大多数读取请求,而无需调用内核调用。但是,这些统计信息并不能说明全部问题:由于 PostgreSQL 处理磁盘 I/O 的方式,不在 PostgreSQL 缓冲区高速缓存中的数据可能仍驻留在内核的 I/O 高速缓存中,因此仍可能被提取。无需物理读取。建议有兴趣获取有关 PostgreSQL I/O 行为的更多详细信息的用户,结合使用 PostgreSQL 统计信息收集器和允许深入了解内核对 I/O 处理的 osUtil。

表 28.3. pg_stat_activity查看

ColumnTypeDescription
datidoid后端连接到的数据库的 OID
datnamename该后端连接到的数据库的名称
pidinteger该后端的进程 ID
usesysidoid登录此后端的用户的 OID
usenamename登录到此后端的用户名
application_nametext与此后端连接的应用程序的名称
client_addrinet与此后端连接的 Client 端的 IP 地址。如果此字段为 null,则表明 Client 端是通过服务器计算机上的 Unix 套接字连接的,或者这是内部进程,例如 autovacuum。
client_hostnametext反向 DNS 查询client_addr报告所连接 Client 端的主机名。对于 IP 连接,仅当启用log_hostname时,此字段将为非空。
client_portintegerClient 端用于与此后端通信的 TCP 端口号;如果使用 Unix 套接字,则为-1
backend_starttimestamp with time zone此过程开始的时间。对于 Client 端后端,这是 Client 端连接到服务器的时间。
xact_starttimestamp with time zone开始该进程的当前事务的时间;如果没有活动的事务,则为 null。如果当前查询是其第一笔 Transaction,则此列等于query_start列。
query_starttimestamp with time zone启动当前活动查询的时间,或者如果state不是active,则上一次查询开始的时间
state_changetimestamp with time zonestate上次更改的时间
wait_event_typetext后端正在 await 的事件类型(如果有);否则为 NULL。可能的值为:

LWLock:后端正在 await 轻量级锁定。每个这样的锁都会保护共享内存中的特定数据结构。 wait_event将包含一个标识轻型锁用途的名称。 (某些锁具有特定的名称;其他锁是一组锁的一部分,每个锁具有相似的用途.)
Lock:后端正在 await 重量级锁定。重量级锁(也称为锁 Management 器锁或简称为锁)主要保护 SQL 可见的对象(例如表)。但是,它们还用于确保某些内部操作(例如关系扩展)的互斥。 wait_event将标识 await 的锁的类型。
BufferPin:在没有其他进程可以检查数据缓冲区的时间段内,服务器进程正在 await 访问数据缓冲区。如果另一个进程持有一个打开的游标,该游标最后一次从有关缓冲区中读取数据,则可能会延长缓冲区的 await 时间。
Activity:服务器进程处于空闲状态。系统进程在其主处理循环中 await 活动时使用它。 wait_event将标识特定的 await 点。
Extension:服务器进程正在 await 扩展模块中的活动。此类别对于模块跟踪自定义 await 点很有用。
Client:服务器进程正在 await 用户应用程序在套接字上进行某些活动,并且服务器期望发生独立于其内部进程的事件。 wait_event将标识特定的 await 点。
IPC:服务器进程正在 await 服务器中另一个进程的活动。 wait_event将标识特定的 await 点。
Timeout:服务器进程正在 await 超时到期。 wait_event将标识特定的 await 点。
IO:服务器进程正在 awaitIO 完成。 wait_event将标识特定的 await 点。
wait_eventtextawait 事件名称(如果后端当前正在 await),否则为 NULL。有关详细信息,请参见Table 28.4
statetext后端的当前总体状态。可能的值为:
active:后端正在执行查询。
idle:后端正在 await 新的 Client 端命令。
idle in transaction:后端在事务中,但当前未执行查询。
idle in transaction (aborted):此状态类似于idle in transaction,除了事务中的一条语句导致错误。
fastpath function call:后端正在执行快速路径功能。
disabled:如果在此后端中禁用了track_activities,则报告此状态。
backend_xidxid此后端的顶级事务标识符(如果有)。
backend_xminxid当前后端的xmin范围。
querytext此后端的最新查询的文本。如果stateactive,则此字段显示当前正在执行的查询。在所有其他状态下,它显示最后执行的查询。默认情况下,查询文本将被截断为 1024 个字符。可以通过参数track_activity_query_size更改此值。
backend_typetext当前后端的类型。可能的类型是autovacuum launcherautovacuum workerlogical replication launcherlogical replication workerparallel workerbackground writerclient backendcheckpointerstartupwalreceiverwalsenderwalwriter。此外,通过 extensions 注册的后台工作人员可能具有其他类型。

每个服务器进程的pg_stat_activity视图将有一行,显示与该进程的当前活动有关的信息。

Note

wait_eventstate列是独立的。如果后端处于active状态,则在某些情况下它可能为waiting,也可能不是。如果状态为activewait_event为非空,则表示正在执行查询,但在系统中某处被阻止。

表 28.4. wait_event说明

await 事件类型await 事件名称Description
LWLockShmemIndexLockawait 在共享内存中查找或分配空间。
OidGenLockawait 分配或分配 OID。
XidGenLockawait 分配或分配 TransactionID。
ProcArrayLockawait 获取快照或在事务结束时清除事务 ID。
SInvalReadLockawait 从共享失效队列中检索或删除消息。
SInvalWriteLockawait 在共享失效队列中添加消息。
WALBufMappingLockawait 替换 WAL 缓冲区中的页面。
WALWriteLockawaitWAL 缓冲区写入磁盘。
ControlFileLockawait 读取或更新控制文件或创建新的 WAL 文件。
CheckpointLockawait 执行检查点。
CLogControlLockawait 读取或更新 Transaction 状态。
SubtransControlLockawait 读取或更新子 Transaction 信息。
MultiXactGenLockawait 读取或更新共享多重状态。
MultiXactOffsetControlLockawait 读取或更新多重偏移 Map。
MultiXactMemberControlLockawait 读取或更新多重成员 Map。
RelCacheInitLockawait 读取或写入关系缓存初始化文件。
CheckpointerCommLockawaitManagementfsync 请求。
TwoPhaseStateLockawait 读取或更新准备好的事务的状态。
TablespaceCreateLockawait 创建或删除表空间。
BtreeVacuumLockawait 读取或更新 B 树索引的与真空相关的信息。
AddinShmemInitLock正在 awaitManagement 共享内存中的空间分配。
AutovacuumLock自动真空工或 Launcher 正在 await 更新或读取自动真空工的当前状态。
AutovacuumScheduleLockawait 确保它选择用于抽真空的桌子仍然需要抽真空。
SyncScanLockawait 获取扫描在表上的开始位置以进行同步扫描。
RelationMappingLockawait 更新用于存储目录到文件节点 Map 的关系 Map 文件。
AsyncCtlLockawait 读取或更新共享通知状态。
AsyncQueueLockawait 阅读或更新通知消息。
SerializableXactHashLockawait 检索或存储有关可序列化事务的信息。
SerializableFinishedListLockawait 访问已完成的可序列化事务列表。
SerializablePredicateLockListLockawait 对可序列化事务持有的锁列表执行操作。
OldSerXidLockawait 读取或记录冲突的可序列化事务。
SyncRepLockawait 读取或更新有关同步副本的信息。
BackgroundWorkerLockawait 读取或更新后台工作程序状态。
DynamicSharedMemoryControlLockawait 读取或更新动态共享内存状态。
AutoFileLockawait 更新postgresql.auto.conf文件。
ReplicationSlotAllocationLockawait 分配或释放复制插槽。
ReplicationSlotControlLockawait 读取或更新复制插槽状态。
CommitTsControlLockawait 读取或更新事务提交时间戳。
CommitTsLockawait 读取或更新为事务时间戳记设置的最后一个值。
ReplicationOriginLockawait 设置,删除或使用复制源。
MultiXactTruncationLockawait 读取或截断多重信息。
OldSnapshotTimeMapLockawait 读取或更新旧的快照控制信息。
BackendRandomLockawait 生成一个随机数。
LogicalRepWorkerLockawait 对逻辑复制工作者的操作完成。
CLogTruncationLockawait 执行txid_status或更新可用的最早的事务 ID。
clog在阻塞(事务状态)缓冲区上 awaitI/O。
commit_timestamp在提交时间戳缓冲区上 awaitI/O。
subtransawaitI/O 子事务缓冲区。
multixact_offset在多重偏移缓冲区上 awaitI/O。
multixact_member在 multixact_member 缓冲区上 awaitI/O。
async在异步(通知)缓冲区上 awaitI/O。
oldserxid在 oldserxid 缓冲区上 awaitI/O。
wal_insertawait 将 WAL 插入内存缓冲区。
buffer_contentawait 读取或写入内存中的数据页。
buffer_ioawait 数据页面上的 I/O。
replication_originawait 读取或更新复制进度。
replication_slot_io在复制插槽上 awaitI/O。
procawait 读取或更新快速路径锁定信息。
buffer_mappingawait 将数据块与缓冲池中的缓冲区关联。
lock_managerawait 为后端添加或检查锁,或者 await 加入或退出锁组(由并行查询使用)。
predicate_lock_managerawait 添加或检查谓词锁定信息。
parallel_query_dsaawait 并行查询动态共享内存分配锁。
tbmawaitTBM 共享的迭代器锁定。
parallel_append在并行追加计划执行期间 await 选择下一个子计划。
parallel_hash_join在并行哈希计划执行期间 await 分配或交换大块内存或更新计数器。
Lockrelationawait 获取对关系的锁定。
extendawait 扩展关系。
pageawait 获取关系页面上的锁。
tupleawait 获取 Tuples 上的锁。
transactionidawaitTransaction 完成。
virtualxidawait 获取虚拟 xid 锁。
speculative tokenawait 获取推测性插入锁。
objectawait 获取对非关系数据库对象的锁定。
userlockawait 获取用户锁。
advisoryawait 获取咨询用户锁。
BufferPinBufferPinawait 获取缓冲器上的引脚。
ActivityArchiverMain在存档器进程的主循环中 await。
AutoVacuumMain在自动真空启动器过程的主循环中 await。
BgWriterHibernate在后台 Writer 进程中 await,正在休眠。
BgWriterMainawait 在背景 Writer 主要环路处理背景工作者。
CheckpointerMain在检查点进程的主循环中 await。
LogicalApplyMain在逻辑应用过程的主循环中 await。
LogicalLauncherMain在逻辑启动器进程的主循环中 await。
PgStatMain正在 await 统计信息收集器进程的主循环。
RecoveryWalAll在恢复时从流中 awaitWAL。
RecoveryWalStreamawait 恢复时,无法从任何类型的源(本地,归档或流)获得 WAL 数据时,再次尝试检索 WAL 数据。
SysLoggerMain在 syslogger 进程的主循环中 await。
WalReceiverMain在 WAL 接收器进程的主循环中 await。
WalSenderMain在 WAL 发送者进程的主循环中 await。
WalWriterMain在 WAL 编写器进程的主循环中 await。
ClientClientRead正在 await 从 Client 端读取数据。
ClientWrite正在 await 将数据写入 Client 端。
LibPQWalReceiverConnect在 WAL 接收器中 await 构建与远程服务器的连接。
LibPQWalReceiverReceive在 WAL 接收器中 await 从远程服务器接收数据。
SSLOpenServer尝试连接时 awaitSSL。
WalReceiverWaitStartawait 启动过程发送初始数据以进行流复制。
WalSenderWaitForWALawait 在 WAL 发送者进程中刷新 WAL。
WalSenderWriteData在 WAL 发送者进程中处理来自 WAL 接收者的答复时,await 任何活动。
ExtensionExtension正在 await 分机。
IPCBgWorkerShutdownawait 后台工作者关闭。
BgWorkerStartupawait 后台工作者启动。
BtreePageawaitcontinue 并行 B 树扫描所需的页码可用。
ClogGroupUpdateawait 组长在 Transaction 结束时更新 Transaction 状态。
ExecuteGather执行Gather节点时正在 await 子进程的活动。
Hash/Batch/Allocatingawait 当选的 Parallel Hash 参与者分配哈希表。
Hash/Batch/Electing选择一个并行哈希参与者来分配哈希表。
Hash/Batch/Loadingawait 其他并行哈希参与者完成加载哈希表。
Hash/Build/Allocatingawait 当选的 Parallel Hash 参与者分配初始哈希表。
Hash/Build/Electing选择一个并行哈希参与者来分配初始哈希表。
Hash/Build/HashingInnerawait 其他并行哈希参与者完成对内部关系的哈希处理。
Hash/Build/HashingOuterawait 其他并行哈希参与者完成对外部关系的分区。
Hash/GrowBatches/Allocatingawait 当选的并行哈希参与者分配更多批次。
Hash/GrowBatches/Deciding选择一个并行哈希参与者来决定将来的批量增长。
Hash/GrowBatches/Electing选举并行哈希参与者分配更多批次。
Hash/GrowBatches/Finishingawait 当选的 Parallel Hash 参与者决定将来的批次增长。
Hash/GrowBatches/Repartitioningawait 其他并行哈希参与者完成重新分区。
Hash/GrowBuckets/Allocatingawait 当选的并行哈希参与者完成分配更多存储桶的过程。
Hash/GrowBuckets/Electing选举并行哈希参与者分配更多的存储桶。
Hash/GrowBuckets/Reinsertingawait 其他 Parallel Hash 参与者完成将 Tuples 插入新存储桶中。
LogicalSyncDataawait 逻辑复制远程服务器发送数据以进行初始表同步。
LogicalSyncStateChangeawait 逻辑复制远程服务器更改状态。
MessageQueueInternalawait 其他进程附加到共享消息队列中。
MessageQueuePutMessageawait 将协议消息写入共享消息队列。
MessageQueueReceiveawait 从共享消息队列接收字节。
MessageQueueSend正在 await 将字节发送到共享消息队列。
ParallelBitmapScanawait 并行位图扫描初始化。
ParallelCreateIndexScanawait 并行的CREATE INDEXWorker 完成堆扫描。
ParallelFinishawait 并行工作者完成计算。
ProcArrayGroupUpdateawait 组长在 Transaction 结束时清除 TransactionID。
ReplicationOriginDropawait 复制源变为非活动状态被删除。
ReplicationSlotDropawait 复制插槽变为非活动状态被删除。
SafeSnapshotawaitREAD ONLY DEFERRABLE事务的快照。
SyncRep在同步复制期间 await 来自远程服务器的确认。
TimeoutBaseBackupThrottle节流活动时在基本备份期间 await。
PgSleep正在 await 名为pg_sleep的进程。
RecoveryApplyDelayawait 恢复时应用 WAL,因为它被延迟了。
IOBufFileReadawait 从缓冲文件读取。
BufFileWriteawait 写入缓冲文件。
ControlFileReadawait 从控制文件读取。
ControlFileSyncawait 控制文件到达稳定存储。
ControlFileSyncUpdateawait 更新控制文件以达到稳定的存储。
ControlFileWriteawait 写入控制文件。
ControlFileWriteUpdateawait 写入以更新控制文件。
CopyFileRead在文件复制操作期间 await 读取。
CopyFileWrite在文件复制操作期间 await 写入。
DataFileExtendawait 关系数据文件被扩展。
DataFileFlushawait 关系数据文件到达稳定存储。
DataFileImmediateSyncawait 关系数据文件到稳定存储器的立即同步。
DataFilePrefetchawait 从关系数据文件进行异步预取。
DataFileReadawait 从关系数据文件中读取。
DataFileSyncawait 对关系数据文件的更改以达到稳定的存储。
DataFileTruncateawait 关系数据文件被截断。
DataFileWriteawait 写入关系数据文件。
DSMFillZeroWriteawait 将零字节写入动态共享内存备份文件。
LockFileAddToDataDirReadawait 读取,同时在数据目录锁定文件中添加一行。
LockFileAddToDataDirSyncawait 数据到达稳定的存储空间,同时在数据目录锁定文件中添加一行。
LockFileAddToDataDirWrite在向数据目录锁定文件添加行的同时 await 写入。
LockFileCreateRead创建数据目录锁定文件时正在 await 读取。
LockFileCreateSync创建数据目录锁定文件时,await 数据到达稳定的存储。
LockFileCreateWrite在创建数据目录锁定文件时 await 写入。
LockFileReCheckDataDirRead在重新检查数据目录锁定文件期间 await 读取。
LogicalRewriteCheckpointSync在检查点期间 await 逻辑重写 Map 到达稳定的存储。
LogicalRewriteMappingSync在逻辑重写期间 awaitMap 数据到达稳定的存储。
LogicalRewriteMappingWrite在逻辑重写期间 awaitMap 数据的写入。
LogicalRewriteSyncawait 逻辑重写 Map 到达稳定的存储。
LogicalRewriteTruncate在逻辑重写期间 await 截断 Map 数据。
LogicalRewriteWriteawait 逻辑重写 Map 的写入。
RelationMapReadawait 读取关系 Map 文件。
RelationMapSyncawait 关系 Map 文件到达稳定存储。
RelationMapWriteawait 写入关系 Map 文件。
ReorderBufferRead在重新排序缓冲区 Management 期间 await 读取。
ReorderBufferWrite在重新排序缓冲区 Management 期间 await 写操作。
ReorderLogicalMappingRead在重新排序缓冲区 Management 期间 await 读取逻辑 Map。
ReplicationSlotReadawait 从复制插槽控制文件读取。
ReplicationSlotRestoreSyncawait 复制插槽控制文件到达稳定存储,然后将其还原到内存。
ReplicationSlotSyncawait 复制插槽控制文件到达稳定存储。
ReplicationSlotWriteawait 写入复制插槽控制文件。
SLRUFlushSync在检查点或数据库关闭期间,awaitSLRU 数据到达稳定的存储。
SLRUReadawait 读取 SLRU 页面。
SLRUSync写页面后 awaitSLRU 数据到达稳定存储。
SLRUWriteawait 写 SLRU 页。
SnapbuildReadawait 读取序列化的历史目录快照。
SnapbuildSyncawait 序列化的历史目录快照到达稳定存储。
SnapbuildWriteawait 写入序列化的历史目录快照。
TimelineHistoryFileSyncawait 通过流复制接收的时间轴历史记录文件到达稳定的存储。
TimelineHistoryFileWriteawait 通过流复制接收到的时间轴历史记录文件的写入。
TimelineHistoryReadawait 读取时间轴历史记录文件。
TimelineHistorySyncawait 新创建的时间轴历史记录文件到达稳定存储。
TimelineHistoryWriteawait 写入新创建的时间轴历史记录文件。
TwophaseFileReadawait 读取两阶段状态文件。
TwophaseFileSyncawait 两阶段状态文件到达稳定存储。
TwophaseFileWriteawait 两阶段状态文件的写入。
WALBootstrapSync在引导过程中 awaitWAL 到达稳定的存储。
WALBootstrapWrite在引导过程中 await 写入 WAL 页面。
WALCopyRead通过复制现有的 WAL 段来 await 读取。
WALCopySyncawait 通过复制现有 WAL 段创建的新 WAL 段以到达稳定的存储。
WALCopyWrite通过复制现有的 WAL 段来 await 写操作。
WALInitSyncawait 新初始化的 WAL 文件到达稳定存储。
WALInitWrite在初始化新的 WAL 文件时 await 写入。
WALReadawait 读取 WAL 文件。
WALSenderTimelineHistoryRead在 walsender timeline 命令期间 await 从时间线历史记录文件中读取。
WALSyncMethodAssign分配 WAL 同步方法时,await 数据到达稳定的存储。
WALWriteawait 写入 WAL 文件。

Note

对于由 extensions 注册的付款,名称由 extensions 指定,并且将显示为wait_event。用户很可能已经在后端之一中注册了付款(通过在动态共享内存中进行分配),在这种情况下其他后端将没有该信息,因此在这种情况下我们显示extension

这是一个如何查看 await 事件的示例

SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event is NOT NULL;
 pid  | wait_event_type |  wait_event
------+-----------------+---------------
 2540 | Lock            | relation
 6644 | LWLock          | ProcArrayLock
(2 rows)

表 28.5. pg_stat_replication查看

ColumnTypeDescription
pidintegerWAL 发送者进程的进程 ID
usesysidoid登录到该 WAL 发送者进程的用户的 OID
usenamename登录到该 WAL 发送者进程的用户名
application_nametext连接到该 WAL 发送者的应用程序的名称
client_addrinet连接到该 WAL 发送者的 Client 端的 IP 地址。如果此字段为 null,则表明 Client 端通过服务器计算机上的 Unix 套接字连接。
client_hostnametext反向 DNS 查询client_addr报告所连接 Client 端的主机名。对于 IP 连接,仅当启用log_hostname时,此字段将为非空。
client_portintegerClient 端用于与此 WAL 发送者进行通信的 TCP 端口号;如果使用 Unix 套接字,则为-1
backend_starttimestamp with time zone此过程开始的时间,即 Client 端连接到该 WAL 发送者的时间
backend_xminxidhot_standby_feedback报告此备用数据库的xmin范围。
statetext当前的 WAL 发送者状态。可能的值为:


startup:此 WAL 发送者正在启动。
catchup:此 WAL 发送者的已连接备用数据库正在赶上主要数据库。
streaming:此 WAL 发送者在其连接的备用服务器赶上主服务器后,正在流式传输更改。
backup:此 WAL 发送者正在发送备份。
stopping:此 WAL 发送者正在停止。
| sent_lsn | pg_lsn |此连接上发送的最后预写日志位置|
| write_lsn | pg_lsn |此备用服务器将最后预写日志位置写入磁盘|
| flush_lsn | pg_lsn |此备用服务器将上次预写日志位置刷新到磁盘|
| replay_lsn | pg_lsn |最近的预写日志位置已重播到此备用服务器上的数据库中|
| write_lag | interval |在本地刷新最近的 WAL 和接收到该备用服务器已写入它(但尚未刷新或应用它)的通知之间经过了一段时间。如果此服务器被配置为同步备用服务器,则可以用来确定提交时synchronous_commit级别remote_write的延迟。
| flush_lag | interval |在本地刷新最近的 WAL 和接收到该备用服务器已写入并刷新它(但尚未应用)的通知之间经过了一段时间。如果此服务器被配置为同步备用服务器,则可以用来确定提交时synchronous_commit级别on的延迟。
| replay_lag | interval |在本地刷新最近的 WAL 与接收到该备用服务器已写入,刷新并应用它的通知之间经过了一段时间。如果此服务器被配置为同步备用服务器,则可以用来确定提交时synchronous_commit级别remote_apply的延迟。
| sync_priority | integer |此备用服务器的优先级在基于优先级的同步复制中被选择为同步备用服务器。这对于基于仲裁的同步复制没有任何作用。
| sync_state | text |该备用服务器的同步状态。可能的值为:
async:此备用服务器是异步的。
potential:该备用服务器现在是异步的,但是如果当前同步服务器之一发生故障,则有可能变为同步服务器。
sync:此备用服务器是同步的。
quorum:该备用服务器被认为是仲裁备用的候选服务器。

pg_stat_replication视图将在每个 WAL 发送者进程中包含一行,显示有关复制到该发送者的已连接备用服务器的统计信息。仅列出直接连接的备用数据库;没有有关下游备用服务器的信息。

pg_stat_replication视图中报告的滞后时间是对最近的 WAL 被写入,刷新和重放以及使发送者知道所花费的时间的度量。如果将远程服务器配置为同步备用服务器,则这些时间表示每个同步提交级别引入的(或将要引入的)提交延迟。对于异步备用数据库,replay_lag列近似查询最近的事务变为可见之前的延迟。如果备用服务器已完全跟上发送服务器的速度,并且不再有 WAL 活动,则最近测量的延迟时间将 continue 显示一小段时间,然后显示 NULL。

延迟时间会自动进行物理复制。逻辑解码插件可以选择发出跟踪消息;如果没有,跟踪机制将仅显示 NULL 滞后。

Note

假设当前的重放速率,所报告的滞后时间并不是对备用服务器追上发送服务器将花费多长时间的预测。这样的系统在生成新的 WAL 时将显示相似的时间,但是在发送方变为空闲时将有所不同。特别是,当备用数据库完全恢复正常时,pg_stat_replication显示写入,刷新和重播最近报告的 WAL 位置所花费的时间,而不是某些用户可能期望的零。这与测量最近写入事务的同步提交和事务可见性延迟的目标一致。为了减少对于期望使用不同延迟模型的用户的困惑,在完全重播的空闲系统上,延迟列会在短时间后恢复为 NULL。监视系统应选择将其表示为丢失的数据,零还是 continue 显示最后的已知值。

表 28.6. pg_stat_wal_receiver查看

ColumnTypeDescription
pidintegerWAL 接收器进程的进程 ID
statustextWAL 接收器进程的活动状态
receive_start_lsnpg_lsn启动 WAL 接收器时使用的第一个预写日志位置
receive_start_tliinteger启动 WAL 接收器时使用的第一个时间轴编号
received_lsnpg_lsn已收到最后一个预写日志位置并将其刷新到磁盘,此字段的初始值为启动 WAL 接收器时使用的第一个日志位置
received_tliinteger接收并刷新到磁盘的最后一个预写日志位置的时间轴编号,此字段的初始值为启动 WAL 接收器时使用的第一个日志位置的时间轴编号
last_msg_send_timetimestamp with time zone从原始 WAL 发送者收到的最后一条消息的发送时间
last_msg_receipt_timetimestamp with time zone从原始 WAL 发送者收到的最后一条消息的接收时间
latest_end_lsnpg_lsn向原始 WAL 发送者报告的最后一个预写日志位置
latest_end_timetimestamp with time zone向原始 WAL 发送者报告的最后预写日志位置的时间
slot_nametext此 WAL 接收器使用的复制插槽名称
sender_hosttext该 WAL 接收器连接到的 PostgreSQL 实例的主机。如果通过 Unix 套接字进行连接,则可以是主机名,IP 地址或目录路径。 (可以区分路径大小写,因为它始终是从/开始的绝对路径.)
sender_portinteger该 WAL 接收器连接到的 PostgreSQL 实例的端口号。
conninfotext此 WAL 接收器使用的连接字符串,对安全敏感的字段进行了混淆。

pg_stat_wal_receiver视图将仅包含一行,显示有关来自该接收器的连接服务器的 WAL 接收器的统计信息。

表 28.7. pg_stat_subscription查看

ColumnTypeDescription
subidoid订阅的 OID
subnametext订阅名称
pidinteger订阅工作进程的进程 ID
relidOidWorker 正在同步的关系的 OID;主申请工作人员为 null
received_lsnpg_lsn接收到的最后一个预写日志位置,该字段的初始值为 0
last_msg_send_timetimestamp with time zone从原始 WAL 发送者收到的最后一条消息的发送时间
last_msg_receipt_timetimestamp with time zone从原始 WAL 发送者收到的最后一条消息的接收时间
latest_end_lsnpg_lsn向原始 WAL 发送者报告的最后一个预写日志位置
latest_end_timetimestamp with time zone向原始 WAL 发送者报告的最后预写日志位置的时间

pg_stat_subscription视图将为主要工作程序的每个预订包含一行(如果工作程序未在运行,则为空 PID),并为处理已订阅表的初始数据副本的工作程序提供额外的行。

表 28.8. pg_stat_ssl查看

ColumnTypeDescription
pidinteger后端或 WAL 发送者进程的进程 ID
sslboolean如果此连接上使用 SSL,则为 True
versiontext正在使用的 SSL 版本,如果此连接上未使用 SSL,则为 NULL
ciphertext正在使用的 SSL 密码的名称;如果此连接上未使用 SSL,则为 NULL
bitsinteger使用的加密算法中的位数,如果此连接上未使用 SSL,则为 NULL
compressionboolean如果正在使用 SSL 压缩,则为 True;否则为 false;如果在此连接上未使用 SSL,则为 NULL。
clientdntext使用的 Client 端证书的专有名称(DN)字段,如果未提供 Client 端证书或此连接上未使用 SSL,则为 NULL。如果 DN 字段长于NAMEDATALEN(标准版本中为 64 个字符),则此字段将被截断

pg_stat_ssl视图将在每个后端或 WAL 发送者进程中包含一行,显示有关此连接上 SSL 使用情况的统计信息。可以将其连接到pid列上的pg_stat_activitypg_stat_replication以获得有关连接的更多详细信息。

表 28.9. pg_stat_archiver查看

ColumnTypeDescription
archived_countbigint已成功归档的 WAL 文件数
last_archived_waltext成功归档的最后一个 WAL 文件的名称
last_archived_timetimestamp with time zone上次成功执行归档操作的时间
failed_countbigint归档 WAL 文件的失败尝试次数
last_failed_waltext上次失败的归档操作的 WAL 文件的名称
last_failed_timetimestamp with time zone上次归档操作失败的时间
stats_resettimestamp with time zone上次重置这些统计信息的时间

pg_stat_archiver视图将始终只有一行,其中包含有关群集的存档程序进程的数据。

表 28.10. pg_stat_bgwriter查看

ColumnTypeDescription
checkpoints_timedbigint已执行的计划检查点的数量
checkpoints_reqbigint已执行的请求检查点数量
checkpoint_write_timedouble precision在将文件写入磁盘的检查点处理部分中花费的总时间(以毫秒为单位)
checkpoint_sync_timedouble precision在检查点处理中将文件同步到磁盘的部分中所花费的总时间,以毫秒为单位
buffers_checkpointbigint检查点期间写入的缓冲区数
buffers_cleanbigint后台编写器写入的缓冲区数
maxwritten_cleanbigint后台写入器由于写入了太多缓冲区而停止清洁扫描的次数
buffers_backendbigint后端直接写入的缓冲区数
buffers_backend_fsyncbigint后端必须执行自己的fsync调用的次数(通常后台编写器会处理这些操作,即使后端自己执行写入操作)
buffers_allocbigint分配的缓冲区数
stats_resettimestamp with time zone上次重置这些统计信息的时间

pg_stat_bgwriter视图将始终只有一行,其中包含群集的全局数据。

表 28.11. pg_stat_database查看

ColumnTypeDescription
datidoid数据库的 OID
datnamename该数据库的名称
numbackendsinteger当前连接到该数据库的后端数。这是该视图中唯一返回反映当前状态的值的列;所有其他列均返回自上次复位以来的累计值。
xact_commitbigint此数据库中已提交的事务数
xact_rollbackbigint此数据库中已回滚的事务数
blks_readbigint在此数据库中读取的磁盘块数
blks_hitbigint已在缓冲区高速缓存中找到磁盘块的次数,因此无需读取(这仅包括 PostgreSQL 缓冲区高速缓存中的命中,而不包括 os 的文件系统高速缓存)
tup_returnedbigint此数据库中查询返回的行数
tup_fetchedbigint此数据库中的查询获取的行数
tup_insertedbigint查询在此数据库中插入的行数
tup_updatedbigint该数据库中的查询更新的行数
tup_deletedbigint该数据库中的查询删除的行数
conflictsbigint由于与该数据库中的恢复冲突而取消的查询数。 (冲突仅在备用服务器上发生;有关详细信息,请参见pg_stat_database_conflicts。)
temp_filesbigint由该数据库中的查询创建的临时文件数。无论创建临时文件的原因(例如排序或散列)还是log_temp_files设置,都将对所有临时文件进行计数。
temp_bytesbigint通过此数据库中的查询写入临时文件的数据总量。无论创建临时文件的原因和log_temp_files设置如何,都将计算所有临时文件。
deadlocksbigint在此数据库中检测到的死锁数
blk_read_timedouble precision后端在此数据库中读取数据文件块所花费的时间(以毫秒为单位)
blk_write_timedouble precision后端在此数据库中写入数据文件块所花费的时间(以毫秒为单位)
stats_resettimestamp with time zone上次重置这些统计信息的时间

pg_stat_database视图将为集群中的每个数据库包含一行,显示数据库范围的统计信息。

表 28.12. pg_stat_database_conflicts查看

ColumnTypeDescription
datidoid数据库的 OID
datnamename该数据库的名称
confl_tablespacebigint由于删除了表空间,该数据库中已取消的查询数
confl_lockbigint该数据库中由于锁定超时而取消的查询数
confl_snapshotbigint由于旧快照而已取消的该数据库中的查询数
confl_bufferpinbigint由于固定了缓冲区,该数据库中已取消的查询数
confl_deadlockbigint该数据库中由于死锁而取消的查询数

pg_stat_database_conflicts视图将每个数据库包含一行,显示整个数据库的统计信息,这些统计信息涉及由于与备用服务器上的恢复冲突而发生的查询取消。该视图将仅包含有关备用服务器的信息,因为在主服务器上不会发生冲突。

表 28.13. pg_stat_all_tables查看

ColumnTypeDescription
relidoid表的 OID
schemanamename该表所在的架构的名称
relnamename表格名称
seq_scanbigint在此表上启动的 Sequences 扫描数
seq_tup_readbigintSequences 扫描获取的活动行数
idx_scanbigint在此表上启动的索引扫描数
idx_tup_fetchbigint索引扫描获取的活动行数
n_tup_insbigint插入的行数
n_tup_updbigint更新的行数(包括 HOT 更新的行)
n_tup_delbigint删除的行数
n_tup_hot_updbigintHOT 已更新的行数(即,不需要单独的索引更新)
n_live_tupbigint估计的活动行数
n_dead_tupbigint估计的死行数
n_mod_since_analyzebigint自上次分析此表以来,已修改的估计行数
last_vacuumtimestamp with time zone上次手动清理此表的时间(不计VACUUM FULL)
last_autovacuumtimestamp with time zone上次使用 autovacuum 守护程序清理该表的时间
last_analyzetimestamp with time zone上次手动分析此表的时间
last_autoanalyzetimestamp with time zone上次由 autovacuum 守护程序分析该表的时间
vacuum_countbigint手动清理此表的次数(不计VACUUM FULL)
autovacuum_countbigint该表已被 autovacuum 守护程序清除的次数
analyze_countbigint手动分析该表的次数
autoanalyze_countbigintautovacuum 守护程序对该表进行分析的次数

pg_stat_all_tables视图将为当前数据库中的每个表(包括 TOAST 表)包含一行,显示有关对该特定表的访问的统计信息。 pg_stat_user_tablespg_stat_sys_tables视图包含相同的信息,但经过过滤仅分别显示用户表和系统表。

表 28.14. pg_stat_all_indexes查看

ColumnTypeDescription
relidoid该索引的表的 OID
indexrelidoid该索引的 OID
schemanamename该索引所在的模式的名称
relnamename该索引的表名
indexrelnamename索引名称
idx_scanbigint在此索引上启动的索引扫描数
idx_tup_readbigint对该索引的扫描返回的索引条目数
idx_tup_fetchbigint使用此索引通过简单索引扫描获取的活动表行数

pg_stat_all_indexes视图将为当前数据库中的每个索引包含一行,显示有关对该特定索引的访问的统计信息。 pg_stat_user_indexespg_stat_sys_indexes视图包含相同的信息,但经过过滤仅分别显示用户索引和系统索引。

索引可以由简单的索引扫描,“位图”索引扫描和优化器使用。在位图扫描中,可以通过 AND 或 OR 规则组合多个索引的输出,因此在使用位图扫描时,很难将单个堆行提取与特定索引相关联。因此,位图扫描会递增pg_stat_all_indexes。所使用的索引的idx_tup_read个计数,并且pg_stat_all_tables递增。表的idx_tup_fetch计数,但不影响pg_stat_all_indexesidx_tup_fetch。优化器还访问索引以检查提供的常量,这些常量的值在优化器统计信息的记录范围之外,因为优化器统计信息可能已过时。

Note

即使不使用位图扫描,idx_tup_readidx_tup_fetch计数也可能不同,因为idx_tup_read对从索引检索的索引条目进行计数,而idx_tup_fetch对从表中获取的活动行进行计数。如果使用索引获取任何无效或尚未提交的行,或者通过仅索引扫描避免了任何堆获取,则后者将更少。

表 28.15. pg_statio_all_tables查看

ColumnTypeDescription
relidoid表的 OID
schemanamename该表所在的架构的名称
relnamename表格名称
heap_blks_readbigint从该表读取的磁盘块数
heap_blks_hitbigint该表中的缓冲区命中数
idx_blks_readbigint从该表上所有索引读取的磁盘块数
idx_blks_hitbigint该表上所有索引中的缓冲区命中数
toast_blks_readbigint从此表的 TOAST 表中读取的磁盘块数(如果有)
toast_blks_hitbigint该表的 TOAST 表中的缓冲区命中数(如果有)
tidx_blks_readbigint从此表的 TOAST 表索引中读取的磁盘块数(如果有)
tidx_blks_hitbigint该表的 TOAST 表索引中的缓冲区命中数(如果有)

pg_statio_all_tables视图将为当前数据库中的每个表(包括 TOAST 表)包含一行,显示该特定表上有关 I/O 的统计信息。 pg_statio_user_tablespg_statio_sys_tables视图包含相同的信息,但经过过滤仅分别显示用户表和系统表。

表 28.16. pg_statio_all_indexes查看

ColumnTypeDescription
relidoid该索引的表的 OID
indexrelidoid该索引的 OID
schemanamename该索引所在的模式的名称
relnamename该索引的表名
indexrelnamename索引名称
idx_blks_readbigint从该索引读取的磁盘块数
idx_blks_hitbigint该索引中的缓冲区命中数

pg_statio_all_indexes视图将为当前数据库中的每个索引包含一行,显示有关该特定索引的 I/O 的统计信息。 pg_statio_user_indexespg_statio_sys_indexes视图包含相同的信息,但经过过滤仅分别显示用户索引和系统索引。

表 28.17. pg_statio_all_sequences查看

ColumnTypeDescription
relidoid序列的 OID
schemanamename此序列所在的模式的名称
relnamename该序列的名称
blks_readbigint从该序列读取的磁盘块数
blks_hitbigint此序列中的缓冲区命中数

pg_statio_all_sequences视图将为当前数据库中的每个序列包含一行,显示有关该特定序列的 I/O 的统计信息。

表 28.18. pg_stat_user_functions查看

ColumnTypeDescription
funcidoid函数的 OID
schemanamename该函数所在的模式的名称
funcnamename该功能的名称
callsbigint该函数被调用的次数
total_timedouble precision此函数及其调用的所有其他函数所花费的总时间(以毫秒为单位)
self_timedouble precision在此函数本身中花费的总时间(不包括它调用的其他函数),以毫秒为单位

pg_stat_user_functions视图将为每个跟踪的功能包含一行,显示有关该功能执行的统计信息。 track_functions参数可精确控制要跟踪的功能。

28 .2.3. 统计功能

可以通过编写查询来构建查看统计信息的其他方式,这些查询使用与上面显示的标准视图所使用的相同的基础统计信息访问功能。有关功能名称等详细信息,请查阅标准视图的定义。 (例如,在 psql 中,您可以发出\d+ pg_stat_activity.)针对每个数据库的统计信息的访问函数将数据库 OID 作为参数来标识要报告的数据库。每个表和每个索引函数采用一个表或索引 OID。用于每个功能的统计信息的功能带有功能 OID。请注意,使用这些功能只能看到当前数据库中的表,索引和功能。

与统计信息收集相关的其他功能在Table 28.19中列出。

表 28.19. 附加统计功能

FunctionReturn TypeDescription
pg_backend_pid()integer处理当前会话的服务器进程的进程 ID
pg_stat_get_activity(integer) setof record返回有关具有指定 PID 的后端信息的记录,如果指定了NULL,则返回系统中每个活动后端的一条记录。返回的字段是pg_stat_activity视图中的字段的子集。
pg_stat_get_snapshot_timestamp() timestamp with time zone返回当前统计信息快照的时间戳
pg_stat_clear_snapshot() void丢弃当前的统计快照
pg_stat_reset() void将当前数据库的所有统计信息计数器重置为零(默认情况下需要超级用户特权,但是可以将此功能的执行权授予其他人.)
pg_stat_reset_shared(text) void根据参数将某些集群范围的统计信息计数器重置为零(默认情况下需要超级用户特权,但可以将此函数的 EXECUTE 授予其他人)。调用pg_stat_reset_shared('bgwriter')会将pg_stat_bgwriter视图中显示的所有计数器清零。调用pg_stat_reset_shared('archiver')会将pg_stat_archiver视图中显示的所有计数器清零。
pg_stat_reset_single_table_counters(oid) void将当前数据库中单个表或索引的统计信息重置为零(默认情况下需要超级用户特权,但是可以将此函数的执行权限授予其他人)
pg_stat_reset_single_function_counters(oid) void将当前数据库中单个功能的统计信息重置为零(默认情况下需要超级用户特权,但是可以将该功能的执行权授予其他人)

pg_stat_get_activity(pg_stat_activity视图的基础功能)返回一组记录,其中包含有关每个后端进程的所有可用信息。有时,仅获取此信息的子集可能更方便。在这种情况下,可以使用一组较旧的按后端统计信息访问功能;这些显示在Table 28.20中。这些访问功能使用后端 ID 号,范围从 1 到当前活动的后端数。函数pg_stat_get_backend_idset提供了一种方便的方法来为每个活动的后端生成一行以调用这些函数。例如,要显示所有后端的 PID 和当前查询:

SELECT pg_stat_get_backend_pid(s.backendid) AS pid,
       pg_stat_get_backend_activity(s.backendid) AS query
    FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS s;

表 28.20. 每个后端统计功能

FunctionReturn TypeDescription
pg_stat_get_backend_idset()setof integer当前活动的后端 ID 号集(从 1 到活动的后端数)
pg_stat_get_backend_activity(integer)text此后端最近查询的文本
pg_stat_get_backend_activity_start(integer)timestamp with time zone最近一次查询开始的时间
pg_stat_get_backend_client_addr(integer)inet与此后端连接的 Client 端的 IP 地址
pg_stat_get_backend_client_port(integer)integerClient 端用于通信的 TCP 端口号
pg_stat_get_backend_dbid(integer)oid后端连接到的数据库的 OID
pg_stat_get_backend_pid(integer)integer该后端的进程 ID
pg_stat_get_backend_start(integer)timestamp with time zone此过程开始的时间
pg_stat_get_backend_userid(integer)oid登录此后端的用户的 OID
pg_stat_get_backend_wait_event_type(integer)text如果后端当前正在 await,则 await 事件类型名称,否则为 NULL。有关详情,请参见Table 28.4
pg_stat_get_backend_wait_event(integer)text如果后端当前正在 await,则 await 事件名称,否则为 NULL。有关详情,请参见Table 28.4
pg_stat_get_backend_xact_start(integer)timestamp with time zone当前事务开始的时间