文章目录
前言
等待事件是分析数据库性能问题重要手段,PG数据库可以通过pg_stat_activity视图查询当前系统相关等待事件。
select wait_event_type,wait_event,stat,backend_type,sbustr(query,0,30) query,count(*) from sys_stat_activity group by wait_event_type,wait_event,stat,backend_type,state,query order by count desc limit5;
分类 | 名称 | 描述 | 关联根因 |
---|---|---|---|
Activity | ArchiverMain | 归档进程的主循环等待 | 后台进程,一般可忽略 |
Activity | AutoVacuumMain | autovacuum启动进程的主循环等待 | 后台进程,一般可忽略 |
Activity | BgWriterHibernate | 后台写入进程等待,正在休眠 | 后台进程,一般可忽略 |
Activity | BgWriterMain | bgwriter进程的主循环等待 | 后台进程,一般可忽略 |
Activity | CheckpointerMain | CKPT进程主循环等待 | 后台进程,一般可忽略 |
Activity | LogicalApplyMain | 逻辑应用进程主循环等待 | 后台进程,一般可忽略 |
Activity | LogicalLauncherMain | 逻辑启动进程主循环等待 | 后台进程,一般可忽略 |
Activity | PgStatMain | 统计信息采集进程主循环等待 | 后台进程,一般可忽略 |
Activity | RecoveryWalAll | 实例恢复时等待WAL数据流到达 | 等待新的WAL数据 |
Activity | RecoveryWalStream | 在恢复时再次尝试检索 WAL 数据之前,等待任何类型的源(本地、存档或流)中的 WAL 数据不可用时 | 等待新的WAL数据 |
Activity | SysLoggerMain | syslogger进程主循环等待 | 后台进程,一般可忽略 |
Activity | WalReceiverMain | WAL接收进程主循环等待 | 后台进程,一般可忽略 |
Activity | WalSenderMain | WAL发送进程主循环等待 | 后台进程,一般可忽略 |
Activity | WalWriterMain | WAL写进程主循环等待 | 后台进程,一般可忽略 |
BufferPin | BufferPin | 等待获得BUFFER的PIN锁 | 热块、DBCACHE |
Client | ClientRead | 等待读取客户端输入 | 未提交事务,空闲等待 |
Client | ClientWrite | 等待向客户端发送数据 | 网络、TOPSQL |
Client | LibPQWalReceiverConnect | 在 WAL 接收器中等待建立与远程服务器的连接。 | 网络、远程服务器性能 |
Client | LibPQWalReceiverReceive | 等待 WAL 接收器接收来自远程服务器的数据。 | 网络、远程服务器性能 |
Client | SSLOpenServer | 等待SSL连接 | 网络问题、SSL配置问题 |
Client | WalReceiverWaitStart | 等待启动进程发送初始化复制数据流 | 网络问题、SSL配置问题 |
Client | WalSenderWaitForWAL | 进程正等待在 WAL 发件人进程中刷新预写日志 (WAL) | 主库性能问题 |
Client | WalSenderWriteData | 进程正在等待 WAL 发件人进程中处理来自预写日志 (WAL) 接收方的回复时的任何活动 | 网络问题、主库性能问题 |
Extension | Extension | 等待和extension交换数据或消息 | 和扩展插件有关 |
IO | BaseBackupRead | 等待基础备份读取文件 | 磁盘IO |
IO | BaseBackupSync | 等待基础备份数据写入持久化存错 | 磁盘IO |
IO | BaseBackupWrite | 等待基础备份数据写入文件 | 磁盘IO |
IO | BufFileRead | bffered文件读等待 | 磁盘IO,热块,DBCACHE |
IO | BufFileWrite | buffered文件写等待 | DBCACHE,磁盘IO |
IO | BufHashTableSearch | 缓冲区HASH 表查询 | 缓冲区hash表查询 |
IO | ControlFileRead | 等待控制文件读 | 磁盘IO |
IO | ControlFileSync | 等待控制文件写入持久化存储 | 磁盘IO |
IO | ControlFileSyncUpdate | 等待控制文件修改到达持久化存储 | 磁盘IO |
IO | ControlFileWrite | 等待写入控制文件 | 磁盘IO |
IO | ControlFileWriteUpdate | 等待一个修改控制文件的写操作 | 磁盘IO |
IO | CopyFileRead | COPY命令中的读等待 | 磁盘IO |
IO | CopyFileWrite | COPY命令中的写等待 | 磁盘IO |
IO | DataFileExtend | 等待 relation数据文件扩展 | 磁盘IO,磁盘容量 |
IO | DataFileFlush | 等待 relation数据文件写入持久存储 | 磁盘IO |
IO | DataFileImmediateSync | 等待一个立即同步 relation 数据文件写入持久存储 | 磁盘IO |
IO | DataFilePrefetch | 等待从Relation数据文件异步预读数据 | 磁盘IO |
IO | DataFileRead | 等待从relation数据文件读数据 | 磁盘IO |
IO | DataFileSync | 等待 relation 数据文件的变化写入持久存储 | 磁盘IO |
IO | DataFileTruncate | 等待relation 数据文件截断 | 磁盘IO |
IO | DataFileWrite | 等待 relation数据文件写 | 磁盘IO |
IO | DisableConnectFileRead | HA锁分片逻辑文件读取 | 磁盘IO,分布式事务 |
IO | DisableConnectFileSync | HA锁分片逻辑文件强制刷盘 | 磁盘IO,分布式事务 |
IO | DisableConnectFileWrite | HA锁分片逻辑文件写入 | 磁盘IO,分布式事务 |
IO | DoubleWriteFileRead | 双写文件读,和双写区IO有关的读 | 磁盘IO,DML操作 |
IO | DoubleWriteFileWrite | 双写文件写,与脏快写盘有关 | 并发DML、DML操作 |
IO | DSMFillZeroWrite | 等待向一个动态共享内存文件写入字节0 | 并行查询、系统并发、后台任务 |
IO | DWSingleFlushGetPos | 单页面双写文件查找可用位置 | 磁盘IO,并发DML |
IO | DWSingleFlushWrite | 刷新双写数据到永久存储 | 磁盘IO,并发DML |
IO | LockFileAddToDataDirRead | 向数据目录中添加锁文件时的等待 | 磁盘IO,读写权限,数据库配置错误 |
IO | LockFileAddToDataDirSync | 向数据目录添加锁文件时刷新产生的等待 | 磁盘IO,读写权限,数据库配置错误 |
IO | LockFileAddToDataDirWrite | 向数据目录添加锁文件时写入产生的等待 | 磁盘IO,读写权限,数据库配置错误 |
IO | LockFileCreateRead | 向数据目录中添加锁文件前读取产生的等待 | 磁盘IO,读写权限,数据库配置错误 |
IO | LockFileCreateSync | 创建目录锁文件时同步到持久存储 | 磁盘IO |
IO | LockFileCreateWRITE | 创建目录锁文件时写入数据 | 磁盘IO |
IO | LockFileCreateWrite | 创建目录锁文件时写入数据 | 磁盘IO |
IO | LockFileReCheckDataDirRead | 在重新检查数据目录中的锁文件时等待读取锁文件的操作 | 磁盘IO,读写权限,数据库配置错误 |
IO | LOGCTRL_SLEEP | 在等待一个用于日志控制的事件类型,发生在执行需要管理日志的操作时 | 磁盘IO,数据库错误、并发执行 |
IO | LogicalRewriteCheckpointSync | CKPT时等待逻辑重写映射到达持久化存储 | 磁盘IO,检查点,逻辑复制 |
IO | LogicalRewriteMappingSync | 逻辑重写时等待映射数据达到持久化存储 | 磁盘IO、逻辑复制 |
IO | LogicalRewriteMappingWrite | 逻辑重写时等待写映射数据达到持久化存储 | 磁盘IO、逻辑复制 |
IO | LogicalRewriteSync | 等待逻辑重写映射到达持久化存储 | 磁盘IO、逻辑复制 |
IO | LogicalRewriteTruncate | 等待映射数据截断到达持久化存储 | 磁盘IO、逻辑复制 |
IO | LogicalRewriteWrite | 等待一个逻辑重写映射写操作 | 磁盘IO、逻辑复制 |
IO | MPFL_INIT | 初始化max_page_flush_lsn,启动数据库时,设置每个节点的最大页面刷新日志序列号(LSN)的操作 | 数据库启动 |
IO | MPFL_READ | 在读取多进程文件日志(MPFL)时等待文件操作的完成 | 磁盘IO,并发事务 |
IO | MPFL_WRITE | 在写入多进程文件日志(MPFL)时等待文件操作的完成 | 磁盘IO,并发事务 |
IO | OBSList | 对象存储相关,遍历OBS目录 | 磁盘IO |
IO | OBSRead | 对象存储相关,读取OBS对象 | 磁盘IO |
IO | OBSWrite | 对象存储相关,写入OBS对象 | |
IO | PredoApply | 等待并行回放应用回放 | 并行恢复、流复制 |
IO | PredoProcessPending | 并行日志回放中当前记录回放等待其它记录回放完 成 | 并行日志恢复 |
IO | RelationMapRead | 读取系统表到存储位置之间的映射文件 | 磁盘IO、并发DDL、并发SQL执行 |
IO | RelationMapSync | 等待Relation Map文件写入持久存储 | 磁盘IO |
IO | RelationMapWrite | 等待Relation Map文件写 | 磁盘IO、并发DML、并发DDL |
IO | ReorderBufferRead | RecorderBuffer管理中等待读操作(逻辑复制) | 磁盘IO、逻辑复制 |
IO | ReorderBufferWrite | RecorderBuffer管理中等待写操作(逻辑复制) | 磁盘IO、逻辑复制 |
IO | ReorderLogicalMappingRead | RecorderBuffer管理中等待逻辑映射文件读操作 | 磁盘IO、逻辑复制 |
IO | ReplicationSlotRead | 等待复制槽控制文件的读操作 | 磁盘IO、复制 |
IO | ReplicationSlotRestoreSync | 当复制槽控制文件从内存中复制时等待该文件写入持久存储 | 磁盘IO、复制 |
IO | ReplicationSlotSync | 等待复制槽控制文件写入持久存储 | 磁盘IO、复制 |
IO | ReplicationSlotWrite | 等待一个复制槽控制文件写操作 | 磁盘IO、复制 |
IO | SLRUFlushSync | 将pg_clog、pg_subtrans和pg_multixact文件持久化到磁盘。主要在执行checkpoint和数据库停机时发生 | 磁盘IO、检查点、数据库关闭、并发事务 |
IO | SLRURead | 后台进程正在等待从SLRU(Simple LRU)文件中读取数据。SLRU文件是一种用于存储固定大小的记录的简单缓冲区管理器,例如pg_clog、pg_subtrans和pg_multixact | 磁盘IO、并发事务、子事务嵌套 |
IO | SLRUSync | 页写入后等待SLRU数据写入持久存储 | 磁盘IO、并发事务、子事务嵌套 |
IO | SLRUWrite | 等待 SLRU 页写操作 | 磁盘IO、并发事务、子事务嵌套 |
IO | SnapbuildRead | 后台进程正在等待从snapbuild文件中读取数据,snapbuild文件是一种用于存储逻辑复制的快照信息的文件,例如pg_logical/snapshots和pg_logical/replorigin_checkpoint | 磁盘IO、并发事务、逻辑复制 |
IO | SnapbuildSync | 等待序列化的历史目录快照写入持久存储 | 磁盘IO、并发事务、逻辑复制 |
IO | SnapbuildWrite | 等待写入序列化的历史目录快照 | 磁盘IO、并发事务、逻辑复制 |
IO | StrategyGetBuffer | 表示后台进程正在等待从缓冲区管理器中获取一个可用的缓冲区页面。缓冲区管理器使用Clock Sweep算法来选择一个候选的缓冲区页面,如果该页面是干净的,或者可以被写回磁盘,那么就可以分配给后台进程。如果该页面是脏的,或者被其他进程锁定或引用,那么就需要继续扫描下一个页面。当缓冲区中的页面都很繁忙时,就会出现StrategyGetBuffer等待事件 | 缓冲区配置、热块冲突、并发过大、检查点不合理 |
IO | TimelineHistoryFileSync | 等待通过流式复制接收到的时间线历史文件写入持久存储 | 磁盘IO,流复制 |
IO | TimelineHistoryFileWrite | 流式复制时等待时间线文件上的一个写操作被收到 | 磁盘IO,流复制 |