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 Name Description
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 Name Description
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查看

Column Type Description
datid oid 后端连接到的数据库的 OID
datname name 该后端连接到的数据库的名称
pid integer 该后端的进程 ID
usesysid oid 登录此后端的用户的 OID
usename name 登录到此后端的用户名
application_name text 与此后端连接的应用程序的名称
client_addr inet 与此后端连接的 Client 端的 IP 地址。如果此字段为 null,则表明 Client 端是通过服务器计算机上的 Unix 套接字连接的,或者这是内部进程,例如 autovacuum。
client_hostname text 反向 DNS 查询client_addr报告所连接 Client 端的主机名。对于 IP 连接,仅当启用log_hostname时,此字段将为非空。
client_port integer Client 端用于与此后端通信的 TCP 端口号;如果使用 Unix 套接字,则为-1
backend_start timestamp with time zone 此过程开始的时间。对于 Client 端后端,这是 Client 端连接到服务器的时间。
xact_start timestamp with time zone 开始该进程的当前事务的时间;如果没有活动的事务,则为 null。如果当前查询是其第一笔 Transaction,则此列等于query_start列。
query_start timestamp with time zone 启动当前活动查询的时间,或者如果state不是active,则上一次查询开始的时间
state_change timestamp with time zone state上次更改的时间
wait_event_type text 后端正在 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_event text await 事件名称(如果后端当前正在 await),否则为 NULL。有关详细信息,请参见Table 28.4
state text 后端的当前总体状态。可能的值为:
active:后端正在执行查询。
idle:后端正在 await 新的 Client 端命令。
idle in transaction:后端在事务中,但当前未执行查询。
idle in transaction (aborted):此状态类似于idle in transaction,除了事务中的一条语句导致错误。
fastpath function call:后端正在执行快速路径功能。
disabled:如果在此后端中禁用了track_activities,则报告此状态。
backend_xid xid 此后端的顶级事务标识符(如果有)。
backend_xmin xid 当前后端的xmin范围。
query text 此后端的最新查询的文本。如果stateactive,则此字段显示当前正在执行的查询。在所有其他状态下,它显示最后执行的查询。默认情况下,查询文本将被截断为 1024 个字符。可以通过参数track_activity_query_size更改此值。
backend_type text 当前后端的类型。可能的类型是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
LWLock ShmemIndexLock await 在共享内存中查找或分配空间。
OidGenLock await 分配或分配 OID。
XidGenLock await 分配或分配 TransactionID。
ProcArrayLock await 获取快照或在事务结束时清除事务 ID。
SInvalReadLock await 从共享失效队列中检索或删除消息。
SInvalWriteLock await 在共享失效队列中添加消息。
WALBufMappingLock await 替换 WAL 缓冲区中的页面。
WALWriteLock awaitWAL 缓冲区写入磁盘。
ControlFileLock await 读取或更新控制文件或创建新的 WAL 文件。
CheckpointLock await 执行检查点。
CLogControlLock await 读取或更新 Transaction 状态。
SubtransControlLock await 读取或更新子 Transaction 信息。
MultiXactGenLock await 读取或更新共享多重状态。
MultiXactOffsetControlLock await 读取或更新多重偏移 Map。
MultiXactMemberControlLock await 读取或更新多重成员 Map。
RelCacheInitLock await 读取或写入关系缓存初始化文件。
CheckpointerCommLock awaitManagementfsync 请求。
TwoPhaseStateLock await 读取或更新准备好的事务的状态。
TablespaceCreateLock await 创建或删除表空间。
BtreeVacuumLock await 读取或更新 B 树索引的与真空相关的信息。
AddinShmemInitLock 正在 awaitManagement 共享内存中的空间分配。
AutovacuumLock 自动真空工或 Launcher 正在 await 更新或读取自动真空工的当前状态。
AutovacuumScheduleLock await 确保它选择用于抽真空的桌子仍然需要抽真空。
SyncScanLock await 获取扫描在表上的开始位置以进行同步扫描。
RelationMappingLock await 更新用于存储目录到文件节点 Map 的关系 Map 文件。
AsyncCtlLock await 读取或更新共享通知状态。
AsyncQueueLock await 阅读或更新通知消息。
SerializableXactHashLock await 检索或存储有关可序列化事务的信息。
SerializableFinishedListLock await 访问已完成的可序列化事务列表。
SerializablePredicateLockListLock await 对可序列化事务持有的锁列表执行操作。
OldSerXidLock await 读取或记录冲突的可序列化事务。
SyncRepLock await 读取或更新有关同步副本的信息。
BackgroundWorkerLock await 读取或更新后台工作程序状态。
DynamicSharedMemoryControlLock await 读取或更新动态共享内存状态。
AutoFileLock await 更新postgresql.auto.conf文件。
ReplicationSlotAllocationLock await 分配或释放复制插槽。
ReplicationSlotControlLock await 读取或更新复制插槽状态。
CommitTsControlLock await 读取或更新事务提交时间戳。
CommitTsLock await 读取或更新为事务时间戳记设置的最后一个值。
ReplicationOriginLock await 设置,删除或使用复制源。
MultiXactTruncationLock await 读取或截断多重信息。
OldSnapshotTimeMapLock await 读取或更新旧的快照控制信息。
BackendRandomLock await 生成一个随机数。
LogicalRepWorkerLock await 对逻辑复制工作者的操作完成。
CLogTruncationLock await 执行txid_status或更新可用的最早的事务 ID。
clog 在阻塞(事务状态)缓冲区上 awaitI/O。
commit_timestamp 在提交时间戳缓冲区上 awaitI/O。
subtrans awaitI/O 子事务缓冲区。
multixact_offset 在多重偏移缓冲区上 awaitI/O。
multixact_member 在 multixact_member 缓冲区上 awaitI/O。
async 在异步(通知)缓冲区上 awaitI/O。
oldserxid 在 oldserxid 缓冲区上 awaitI/O。
wal_insert await 将 WAL 插入内存缓冲区。
buffer_content await 读取或写入内存中的数据页。
buffer_io await 数据页面上的 I/O。
replication_origin await 读取或更新复制进度。
replication_slot_io 在复制插槽上 awaitI/O。
proc await 读取或更新快速路径锁定信息。
buffer_mapping await 将数据块与缓冲池中的缓冲区关联。
lock_manager await 为后端添加或检查锁,或者 await 加入或退出锁组(由并行查询使用)。
predicate_lock_manager await 添加或检查谓词锁定信息。
parallel_query_dsa await 并行查询动态共享内存分配锁。
tbm awaitTBM 共享的迭代器锁定。
parallel_append 在并行追加计划执行期间 await 选择下一个子计划。
parallel_hash_join 在并行哈希计划执行期间 await 分配或交换大块内存或更新计数器。
Lock relation await 获取对关系的锁定。
extend await 扩展关系。
page await 获取关系页面上的锁。
tuple await 获取 Tuples 上的锁。
transactionid awaitTransaction 完成。
virtualxid await 获取虚拟 xid 锁。
speculative token await 获取推测性插入锁。
object await 获取对非关系数据库对象的锁定。
userlock await 获取用户锁。
advisory await 获取咨询用户锁。
BufferPin BufferPin await 获取缓冲器上的引脚。
Activity ArchiverMain 在存档器进程的主循环中 await。
AutoVacuumMain 在自动真空启动器过程的主循环中 await。
BgWriterHibernate 在后台 Writer 进程中 await,正在休眠。
BgWriterMain await 在背景 Writer 主要环路处理背景工作者。
CheckpointerMain 在检查点进程的主循环中 await。
LogicalApplyMain 在逻辑应用过程的主循环中 await。
LogicalLauncherMain 在逻辑启动器进程的主循环中 await。
PgStatMain 正在 await 统计信息收集器进程的主循环。
RecoveryWalAll 在恢复时从流中 awaitWAL。
RecoveryWalStream await 恢复时,无法从任何类型的源(本地,归档或流)获得 WAL 数据时,再次尝试检索 WAL 数据。
SysLoggerMain 在 syslogger 进程的主循环中 await。
WalReceiverMain 在 WAL 接收器进程的主循环中 await。
WalSenderMain 在 WAL 发送者进程的主循环中 await。
WalWriterMain 在 WAL 编写器进程的主循环中 await。
Client ClientRead 正在 await 从 Client 端读取数据。
ClientWrite 正在 await 将数据写入 Client 端。
LibPQWalReceiverConnect 在 WAL 接收器中 await 构建与远程服务器的连接。
LibPQWalReceiverReceive 在 WAL 接收器中 await 从远程服务器接收数据。
SSLOpenServer 尝试连接时 awaitSSL。
WalReceiverWaitStart await 启动过程发送初始数据以进行流复制。
WalSenderWaitForWAL await 在 WAL 发送者进程中刷新 WAL。
WalSenderWriteData 在 WAL 发送者进程中处理来自 WAL 接收者的答复时,await 任何活动。
Extension Extension 正在 await 分机。
IPC BgWorkerShutdown await 后台工作者关闭。
BgWorkerStartup await 后台工作者启动。
BtreePage awaitcontinue 并行 B 树扫描所需的页码可用。
ClogGroupUpdate await 组长在 Transaction 结束时更新 Transaction 状态。
ExecuteGather 执行Gather节点时正在 await 子进程的活动。
Hash/Batch/Allocating await 当选的 Parallel Hash 参与者分配哈希表。
Hash/Batch/Electing 选择一个并行哈希参与者来分配哈希表。
Hash/Batch/Loading await 其他并行哈希参与者完成加载哈希表。
Hash/Build/Allocating await 当选的 Parallel Hash 参与者分配初始哈希表。
Hash/Build/Electing 选择一个并行哈希参与者来分配初始哈希表。
Hash/Build/HashingInner await 其他并行哈希参与者完成对内部关系的哈希处理。
Hash/Build/HashingOuter await 其他并行哈希参与者完成对外部关系的分区。
Hash/GrowBatches/Allocating await 当选的并行哈希参与者分配更多批次。
Hash/GrowBatches/Deciding 选择一个并行哈希参与者来决定将来的批量增长。
Hash/GrowBatches/Electing 选举并行哈希参与者分配更多批次。
Hash/GrowBatches/Finishing await 当选的 Parallel Hash 参与者决定将来的批次增长。
Hash/GrowBatches/Repartitioning await 其他并行哈希参与者完成重新分区。
Hash/GrowBuckets/Allocating await 当选的并行哈希参与者完成分配更多存储桶的过程。
Hash/GrowBuckets/Electing 选举并行哈希参与者分配更多的存储桶。
Hash/GrowBuckets/Reinserting await 其他 Parallel Hash 参与者完成将 Tuples 插入新存储桶中。
LogicalSyncData await 逻辑复制远程服务器发送数据以进行初始表同步。
LogicalSyncStateChange await 逻辑复制远程服务器更改状态。
MessageQueueInternal await 其他进程附加到共享消息队列中。
MessageQueuePutMessage await 将协议消息写入共享消息队列。
MessageQueueReceive await 从共享消息队列接收字节。
MessageQueueSend 正在 await 将字节发送到共享消息队列。
ParallelBitmapScan await 并行位图扫描初始化。
ParallelCreateIndexScan await 并行的CREATE INDEXWorker 完成堆扫描。
ParallelFinish await 并行工作者完成计算。
ProcArrayGroupUpdate await 组长在 Transaction 结束时清除 TransactionID。
ReplicationOriginDrop await 复制源变为非活动状态被删除。
ReplicationSlotDrop await 复制插槽变为非活动状态被删除。
SafeSnapshot awaitREAD ONLY DEFERRABLE事务的快照。
SyncRep 在同步复制期间 await 来自远程服务器的确认。
Timeout BaseBackupThrottle 节流活动时在基本备份期间 await。
PgSleep 正在 await 名为pg_sleep的进程。
RecoveryApplyDelay await 恢复时应用 WAL,因为它被延迟了。
IO BufFileRead await 从缓冲文件读取。
BufFileWrite await 写入缓冲文件。
ControlFileRead await 从控制文件读取。
ControlFileSync await 控制文件到达稳定存储。
ControlFileSyncUpdate await 更新控制文件以达到稳定的存储。
ControlFileWrite await 写入控制文件。
ControlFileWriteUpdate await 写入以更新控制文件。
CopyFileRead 在文件复制操作期间 await 读取。
CopyFileWrite 在文件复制操作期间 await 写入。
DataFileExtend await 关系数据文件被扩展。
DataFileFlush await 关系数据文件到达稳定存储。
DataFileImmediateSync await 关系数据文件到稳定存储器的立即同步。
DataFilePrefetch await 从关系数据文件进行异步预取。
DataFileRead await 从关系数据文件中读取。
DataFileSync await 对关系数据文件的更改以达到稳定的存储。
DataFileTruncate await 关系数据文件被截断。
DataFileWrite await 写入关系数据文件。
DSMFillZeroWrite await 将零字节写入动态共享内存备份文件。
LockFileAddToDataDirRead await 读取,同时在数据目录锁定文件中添加一行。
LockFileAddToDataDirSync await 数据到达稳定的存储空间,同时在数据目录锁定文件中添加一行。
LockFileAddToDataDirWrite 在向数据目录锁定文件添加行的同时 await 写入。
LockFileCreateRead 创建数据目录锁定文件时正在 await 读取。
LockFileCreateSync 创建数据目录锁定文件时,await 数据到达稳定的存储。
LockFileCreateWrite 在创建数据目录锁定文件时 await 写入。
LockFileReCheckDataDirRead 在重新检查数据目录锁定文件期间 await 读取。
LogicalRewriteCheckpointSync 在检查点期间 await 逻辑重写 Map 到达稳定的存储。
LogicalRewriteMappingSync 在逻辑重写期间 awaitMap 数据到达稳定的存储。
LogicalRewriteMappingWrite 在逻辑重写期间 awaitMap 数据的写入。
LogicalRewriteSync await 逻辑重写 Map 到达稳定的存储。
LogicalRewriteTruncate 在逻辑重写期间 await 截断 Map 数据。
LogicalRewriteWrite await 逻辑重写 Map 的写入。
RelationMapRead await 读取关系 Map 文件。
RelationMapSync await 关系 Map 文件到达稳定存储。
RelationMapWrite await 写入关系 Map 文件。
ReorderBufferRead 在重新排序缓冲区 Management 期间 await 读取。
ReorderBufferWrite 在重新排序缓冲区 Management 期间 await 写操作。
ReorderLogicalMappingRead 在重新排序缓冲区 Management 期间 await 读取逻辑 Map。
ReplicationSlotRead await 从复制插槽控制文件读取。
ReplicationSlotRestoreSync await 复制插槽控制文件到达稳定存储,然后将其还原到内存。
ReplicationSlotSync await 复制插槽控制文件到达稳定存储。
ReplicationSlotWrite await 写入复制插槽控制文件。
SLRUFlushSync 在检查点或数据库关闭期间,awaitSLRU 数据到达稳定的存储。
SLRURead await 读取 SLRU 页面。
SLRUSync 写页面后 awaitSLRU 数据到达稳定存储。
SLRUWrite await 写 SLRU 页。
SnapbuildRead await 读取序列化的历史目录快照。
SnapbuildSync await 序列化的历史目录快照到达稳定存储。
SnapbuildWrite await 写入序列化的历史目录快照。
TimelineHistoryFileSync await 通过流复制接收的时间轴历史记录文件到达稳定的存储。
TimelineHistoryFileWrite await 通过流复制接收到的时间轴历史记录文件的写入。
TimelineHistoryRead await 读取时间轴历史记录文件。
TimelineHistorySync await 新创建的时间轴历史记录文件到达稳定存储。
TimelineHistoryWrite await 写入新创建的时间轴历史记录文件。
TwophaseFileRead await 读取两阶段状态文件。
TwophaseFileSync await 两阶段状态文件到达稳定存储。
TwophaseFileWrite await 两阶段状态文件的写入。
WALBootstrapSync 在引导过程中 awaitWAL 到达稳定的存储。
WALBootstrapWrite 在引导过程中 await 写入 WAL 页面。
WALCopyRead 通过复制现有的 WAL 段来 await 读取。
WALCopySync await 通过复制现有 WAL 段创建的新 WAL 段以到达稳定的存储。
WALCopyWrite 通过复制现有的 WAL 段来 await 写操作。
WALInitSync await 新初始化的 WAL 文件到达稳定存储。
WALInitWrite 在初始化新的 WAL 文件时 await 写入。
WALRead await 读取 WAL 文件。
WALSenderTimelineHistoryRead 在 walsender timeline 命令期间 await 从时间线历史记录文件中读取。
WALSyncMethodAssign 分配 WAL 同步方法时,await 数据到达稳定的存储。
WALWrite await 写入 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查看

Column Type Description
pid integer WAL 发送者进程的进程 ID
usesysid oid 登录到该 WAL 发送者进程的用户的 OID
usename name 登录到该 WAL 发送者进程的用户名
application_name text 连接到该 WAL 发送者的应用程序的名称
client_addr inet 连接到该 WAL 发送者的 Client 端的 IP 地址。如果此字段为 null,则表明 Client 端通过服务器计算机上的 Unix 套接字连接。
client_hostname text 反向 DNS 查询client_addr报告所连接 Client 端的主机名。对于 IP 连接,仅当启用log_hostname时,此字段将为非空。
client_port integer Client 端用于与此 WAL 发送者进行通信的 TCP 端口号;如果使用 Unix 套接字,则为-1
backend_start timestamp with time zone 此过程开始的时间,即 Client 端连接到该 WAL 发送者的时间
backend_xmin xid hot_standby_feedback报告此备用数据库的xmin范围。
state text 当前的 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查看

Column Type Description
pid integer WAL 接收器进程的进程 ID
status text WAL 接收器进程的活动状态
receive_start_lsn pg_lsn 启动 WAL 接收器时使用的第一个预写日志位置
receive_start_tli integer 启动 WAL 接收器时使用的第一个时间轴编号
received_lsn pg_lsn 已收到最后一个预写日志位置并将其刷新到磁盘,此字段的初始值为启动 WAL 接收器时使用的第一个日志位置
received_tli integer 接收并刷新到磁盘的最后一个预写日志位置的时间轴编号,此字段的初始值为启动 WAL 接收器时使用的第一个日志位置的时间轴编号
last_msg_send_time timestamp with time zone 从原始 WAL 发送者收到的最后一条消息的发送时间
last_msg_receipt_time timestamp with time zone 从原始 WAL 发送者收到的最后一条消息的接收时间
latest_end_lsn pg_lsn 向原始 WAL 发送者报告的最后一个预写日志位置
latest_end_time timestamp with time zone 向原始 WAL 发送者报告的最后预写日志位置的时间
slot_name text 此 WAL 接收器使用的复制插槽名称
sender_host text 该 WAL 接收器连接到的 PostgreSQL 实例的主机。如果通过 Unix 套接字进行连接,则可以是主机名,IP 地址或目录路径。 (可以区分路径大小写,因为它始终是从/开始的绝对路径.)
sender_port integer 该 WAL 接收器连接到的 PostgreSQL 实例的端口号。
conninfo text 此 WAL 接收器使用的连接字符串,对安全敏感的字段进行了混淆。

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

表 28.7. pg_stat_subscription查看

Column Type Description
subid oid 订阅的 OID
subname text 订阅名称
pid integer 订阅工作进程的进程 ID
relid Oid Worker 正在同步的关系的 OID;主申请工作人员为 null
received_lsn pg_lsn 接收到的最后一个预写日志位置,该字段的初始值为 0
last_msg_send_time timestamp with time zone 从原始 WAL 发送者收到的最后一条消息的发送时间
last_msg_receipt_time timestamp with time zone 从原始 WAL 发送者收到的最后一条消息的接收时间
latest_end_lsn pg_lsn 向原始 WAL 发送者报告的最后一个预写日志位置
latest_end_time timestamp with time zone 向原始 WAL 发送者报告的最后预写日志位置的时间

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

表 28.8. pg_stat_ssl查看

Column Type Description
pid integer 后端或 WAL 发送者进程的进程 ID
ssl boolean 如果此连接上使用 SSL,则为 True
version text 正在使用的 SSL 版本,如果此连接上未使用 SSL,则为 NULL
cipher text 正在使用的 SSL 密码的名称;如果此连接上未使用 SSL,则为 NULL
bits integer 使用的加密算法中的位数,如果此连接上未使用 SSL,则为 NULL
compression boolean 如果正在使用 SSL 压缩,则为 True;否则为 false;如果在此连接上未使用 SSL,则为 NULL。
clientdn text 使用的 Client 端证书的专有名称(DN)字段,如果未提供 Client 端证书或此连接上未使用 SSL,则为 NULL。如果 DN 字段长于NAMEDATALEN(标准版本中为 64 个字符),则此字段将被截断

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

表 28.9. pg_stat_archiver查看

Column Type Description
archived_count bigint 已成功归档的 WAL 文件数
last_archived_wal text 成功归档的最后一个 WAL 文件的名称
last_archived_time timestamp with time zone 上次成功执行归档操作的时间
failed_count bigint 归档 WAL 文件的失败尝试次数
last_failed_wal text 上次失败的归档操作的 WAL 文件的名称
last_failed_time timestamp with time zone 上次归档操作失败的时间
stats_reset timestamp with time zone 上次重置这些统计信息的时间

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

表 28.10. pg_stat_bgwriter查看

Column Type Description
checkpoints_timed bigint 已执行的计划检查点的数量
checkpoints_req bigint 已执行的请求检查点数量
checkpoint_write_time double precision 在将文件写入磁盘的检查点处理部分中花费的总时间(以毫秒为单位)
checkpoint_sync_time double precision 在检查点处理中将文件同步到磁盘的部分中所花费的总时间,以毫秒为单位
buffers_checkpoint bigint 检查点期间写入的缓冲区数
buffers_clean bigint 后台编写器写入的缓冲区数
maxwritten_clean bigint 后台写入器由于写入了太多缓冲区而停止清洁扫描的次数
buffers_backend bigint 后端直接写入的缓冲区数
buffers_backend_fsync bigint 后端必须执行自己的fsync调用的次数(通常后台编写器会处理这些操作,即使后端自己执行写入操作)
buffers_alloc bigint 分配的缓冲区数
stats_reset timestamp with time zone 上次重置这些统计信息的时间

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

表 28.11. pg_stat_database查看

Column Type Description
datid oid 数据库的 OID
datname name 该数据库的名称
numbackends integer 当前连接到该数据库的后端数。这是该视图中唯一返回反映当前状态的值的列;所有其他列均返回自上次复位以来的累计值。
xact_commit bigint 此数据库中已提交的事务数
xact_rollback bigint 此数据库中已回滚的事务数
blks_read bigint 在此数据库中读取的磁盘块数
blks_hit bigint 已在缓冲区高速缓存中找到磁盘块的次数,因此无需读取(这仅包括 PostgreSQL 缓冲区高速缓存中的命中,而不包括 os 的文件系统高速缓存)
tup_returned bigint 此数据库中查询返回的行数
tup_fetched bigint 此数据库中的查询获取的行数
tup_inserted bigint 查询在此数据库中插入的行数
tup_updated bigint 该数据库中的查询更新的行数
tup_deleted bigint 该数据库中的查询删除的行数
conflicts bigint 由于与该数据库中的恢复冲突而取消的查询数。 (冲突仅在备用服务器上发生;有关详细信息,请参见pg_stat_database_conflicts。)
temp_files bigint 由该数据库中的查询创建的临时文件数。无论创建临时文件的原因(例如排序或散列)还是log_temp_files设置,都将对所有临时文件进行计数。
temp_bytes bigint 通过此数据库中的查询写入临时文件的数据总量。无论创建临时文件的原因和log_temp_files设置如何,都将计算所有临时文件。
deadlocks bigint 在此数据库中检测到的死锁数
blk_read_time double precision 后端在此数据库中读取数据文件块所花费的时间(以毫秒为单位)
blk_write_time double precision 后端在此数据库中写入数据文件块所花费的时间(以毫秒为单位)
stats_reset timestamp with time zone 上次重置这些统计信息的时间

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

表 28.12. pg_stat_database_conflicts查看

Column Type Description
datid oid 数据库的 OID
datname name 该数据库的名称
confl_tablespace bigint 由于删除了表空间,该数据库中已取消的查询数
confl_lock bigint 该数据库中由于锁定超时而取消的查询数
confl_snapshot bigint 由于旧快照而已取消的该数据库中的查询数
confl_bufferpin bigint 由于固定了缓冲区,该数据库中已取消的查询数
confl_deadlock bigint 该数据库中由于死锁而取消的查询数

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

表 28.13. pg_stat_all_tables查看

Column Type Description
relid oid 表的 OID
schemaname name 该表所在的架构的名称
relname name 表格名称
seq_scan bigint 在此表上启动的 Sequences 扫描数
seq_tup_read bigint Sequences 扫描获取的活动行数
idx_scan bigint 在此表上启动的索引扫描数
idx_tup_fetch bigint 索引扫描获取的活动行数
n_tup_ins bigint 插入的行数
n_tup_upd bigint 更新的行数(包括 HOT 更新的行)
n_tup_del bigint 删除的行数
n_tup_hot_upd bigint HOT 已更新的行数(即,不需要单独的索引更新)
n_live_tup bigint 估计的活动行数
n_dead_tup bigint 估计的死行数
n_mod_since_analyze bigint 自上次分析此表以来,已修改的估计行数
last_vacuum timestamp with time zone 上次手动清理此表的时间(不计VACUUM FULL)
last_autovacuum timestamp with time zone 上次使用 autovacuum 守护程序清理该表的时间
last_analyze timestamp with time zone 上次手动分析此表的时间
last_autoanalyze timestamp with time zone 上次由 autovacuum 守护程序分析该表的时间
vacuum_count bigint 手动清理此表的次数(不计VACUUM FULL)
autovacuum_count bigint 该表已被 autovacuum 守护程序清除的次数
analyze_count bigint 手动分析该表的次数
autoanalyze_count bigint autovacuum 守护程序对该表进行分析的次数

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

表 28.14. pg_stat_all_indexes查看

Column Type Description
relid oid 该索引的表的 OID
indexrelid oid 该索引的 OID
schemaname name 该索引所在的模式的名称
relname name 该索引的表名
indexrelname name 索引名称
idx_scan bigint 在此索引上启动的索引扫描数
idx_tup_read bigint 对该索引的扫描返回的索引条目数
idx_tup_fetch bigint 使用此索引通过简单索引扫描获取的活动表行数

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查看

Column Type Description
relid oid 表的 OID
schemaname name 该表所在的架构的名称
relname name 表格名称
heap_blks_read bigint 从该表读取的磁盘块数
heap_blks_hit bigint 该表中的缓冲区命中数
idx_blks_read bigint 从该表上所有索引读取的磁盘块数
idx_blks_hit bigint 该表上所有索引中的缓冲区命中数
toast_blks_read bigint 从此表的 TOAST 表中读取的磁盘块数(如果有)
toast_blks_hit bigint 该表的 TOAST 表中的缓冲区命中数(如果有)
tidx_blks_read bigint 从此表的 TOAST 表索引中读取的磁盘块数(如果有)
tidx_blks_hit bigint 该表的 TOAST 表索引中的缓冲区命中数(如果有)

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

表 28.16. pg_statio_all_indexes查看

Column Type Description
relid oid 该索引的表的 OID
indexrelid oid 该索引的 OID
schemaname name 该索引所在的模式的名称
relname name 该索引的表名
indexrelname name 索引名称
idx_blks_read bigint 从该索引读取的磁盘块数
idx_blks_hit bigint 该索引中的缓冲区命中数

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

表 28.17. pg_statio_all_sequences查看

Column Type Description
relid oid 序列的 OID
schemaname name 此序列所在的模式的名称
relname name 该序列的名称
blks_read bigint 从该序列读取的磁盘块数
blks_hit bigint 此序列中的缓冲区命中数

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

表 28.18. pg_stat_user_functions查看

Column Type Description
funcid oid 函数的 OID
schemaname name 该函数所在的模式的名称
funcname name 该功能的名称
calls bigint 该函数被调用的次数
total_time double precision 此函数及其调用的所有其他函数所花费的总时间(以毫秒为单位)
self_time double precision 在此函数本身中花费的总时间(不包括它调用的其他函数),以毫秒为单位

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

28 .2.3. 统计功能

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

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

表 28.19. 附加统计功能

Function Return Type Description
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. 每个后端统计功能

Function Return Type Description
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) integer Client 端用于通信的 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 当前事务开始的时间
上一章 首页 下一章