聊聊PG类等待事件分析最新版(V5.320230731)

2023年 8月 9日 57.8k 0

昨天发了篇关于分布式数据库的不同点的文章,实际上分布式数据库的特点是分片与并行计算,所以无论哪种架构,最终都会通过分片和并行计算来提供强大的横向扩展能力与并行处理能力。最终的目标都是在计算层通过强大的,远超过集中式数据库复杂度的CBO优化器,产生优秀的,可大量并发执行的执行计划,并将最小粒度的算子下推到其他计算节点或者存储节点去做并行计算;在存储层,通过更细粒度的分片管理,能够更为精细化的管理数据分片;在资源管理层,具有强大的资源管理和隔离能力,确保关键任务与普通任务能够以不同的优先级获得各种算力资源,同时能够通过多租户能力为用户提供各种需求的资源。

今天我们来谈谈数据库的等待事件问题。等待事件是做性能优化、故障诊断的利器。Oracle数据库在7.3开始通过OWI提供了等待事件接口,自此开始,等待事件已经成为DBA分析数据库的最为重要的手段之一。

最近我一直在梳理PG及其相近与相兼容的数据库的等待事件,用于D-SMART的运维知识图谱之中。前阵子去阿布吉徒步,这个工作被耽搁了半个月,今天下午终于完成了初稿。整理等待事件的知识主要的目的是用于运维中的自动化诊断。根据数据库内部等待事件的情况来判断系统可能在哪些方面出现了问题。

         

图片图片

根据数据库中的等待事件,通过智能化诊断算法去做一个初步分析,为运维专家提供一些参考:

图片图片

比如上面的案例,通过等待事件分析,发现系统中的HASH JION的并发执行过大。

本次梳理的等待事件涵盖了PostgreSQL(9.x-15),openGauss系列数据库,包含海量G100、南大通用GBASE 8C、MogDB等兼容国产数据库。以及华为商用版的Gaussdb、Gaussdb DWS,以及阿里Polardb-Postgresql、Polardb-O等相关兼容的数据库产品。

等待事件的知识图谱要覆盖数据库的各种历史版本,才能在各种用户的场景中发挥作用。我在梳理等待事件的时候,对于某些等待事件也知之不多,因此经常向各个厂家的朋友请教,在这里我也要对给与我帮助的各个友商的朋友表示感谢。

在梳理等待事件知识图谱的时候,我也经常会遇到某些等待事件,目前已经被厂商废弃了,因此很难给出明确的答案。我想对于数据库产品的研发人员来说,可以不太去关注已经废弃的功能,但是对于数据库厂商来说,这些功能虽然在新版本的数据库中被废弃了,但是低版本的数据库可能还在用户侧运行着,这些用户也应该是数据库厂商的服务对象。这些被废弃的等待事件,其知识内容也还是应该继续有人维护的。

如果大家对PG类数据库的等待事件感兴趣,可以收藏。同时本文中的一些知识梳理过程中肯定存在一些不准确甚至错误的地方。也希望有共同爱好的朋友指出其中的错误,让这个知识库更加准确。我也将定期将修订后的版本发布给大家。当前的版本,在我们公司内部的版本号是5.3。

分类

名称

描述

关联根因

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,流复制

IO

TimelineHistoryRead

等待时间线历史文件上的读操作

磁盘IO,流复制

IO

TimelineHistorySync

等待新创建的时间线历史文件写入持久存储

磁盘IO,流复制

IO

TimelineHistoryWrite

等待新创建的时间线历史文件上的写操作

磁盘IO,流复制

IO

TwophaseFileRead

等待两阶段状态文件读操作

磁盘IO、分布式事务

IO

TwophaseFileSync

等待两阶段状态文件写入持久存储

磁盘IO、分布式事务

IO

TwophaseFileWrite

等待两阶段状态文件写操作

磁盘IO、分布式事务

IO

UndoFileExtend

UNDO文件扩展

UNDO量增加

IO

UndoFileFlush

UNDO文件刷盘

并发事务

IO

UndoFilePrefetch

UNDO文件预读

一致性读

IO

UndoFileRead

UNDO文件读

一致性读

IO

UndoFileSync

UNDO文件同步

并发事务

IO

UndoFileWrite

UNDO文件写

并发事务

IO

VersionFileWrite

创建数据库时写入VERSION文件产生的等待

磁盘IO

IO

WALBootstrapSync

bootstrap的时候等待WAL文件写入持久存储

磁盘IO、启动

IO

WALBootstrapWrite

bootstrap的时候等待WAL页写操作

磁盘IO、启动

IO

WALBufferAccess

WAL BUFFER访问

并发事务

IO

WALBufferFull

WAL缓冲区满

WAL并发、并发修改、IO性能

IO

WALCopyRead

当使用拷贝一个现有的WAL 段创建一个新WAL段的时候等待读操作

磁盘IO、复制

IO

WALCopySync

当使用拷贝一个现有的WAL 段创建一个新WAL段的时候等待写入持久存储

磁盘IO、复制

IO

WALCopyWrite

当使用拷贝一个现有的WAL 段创建一个新WAL段的时候等待写操作

磁盘IO、复制

IO

WALInitSync

等待一个新初始化的WAL文件写入持久存储

磁盘IO、检查点

IO

WALInitWrite

初始化新的WAL文件的时候等待写操作

磁盘IO、检查点

IO

WALRead

等待WAL文件读

磁盘IO

IO

WALSenderTimelineHistoryRead

在 walsender 时间线命令期间等待从时间线历史文件中读取

磁盘IO、复制

IO

WALSync

等待 WAL 文件到达持久的存储空间

磁盘IO、WAL量

IO

WALSyncMethodAssign

WAL 同步模式时等待数据写入持久存储

磁盘IO、WAL量

IO

WALWrite

等待WAL文件写

磁盘IO、WAL量

IPC

BgWorkerShutdown

等待后台worker关闭

关闭实例

IPC

BgWorkerStartup

等待后台worker启动

启动实例

IPC

BtreePage

等待继续并行 B 树扫描所需的页可用(并行索引扫描)

并行执行

IPC

ExecuteGather

执行Gather时等待子进程的活动

表分析

IPC

Hash/Batch/Allocating

HASH JOIN 相关

HASH JOIN

IPC

Hash/Batch/Electing

HASH JOIN 相关

HASH JOIN

IPC

Hash/Batch/Loading

HASH JOIN 相关

HASH JOIN

IPC

Hash/Build/Allocating

HASH JOIN 相关

HASH JOIN

IPC

Hash/Build/Electing

HASH JOIN 相关

HASH JOIN

IPC

Hash/Build/HashingInner

HASH JOIN 相关

HASH JOIN

IPC

Hash/Build/HashingOuter

HASH JOIN 相关

HASH JOIN

IPC

Hash/GrowBatches/Allocating

HASH JOIN 相关

HASH JOIN

IPC

Hash/GrowBatches/Deciding

HASH JOIN 相关

HASH JOIN

IPC

Hash/GrowBatches/Electing

HASH JOIN 相关

HASH JOIN

IPC

Hash/GrowBatches/Finishing

HASH JOIN 相关

HASH JOIN

IPC

Hash/GrowBatches/Repartitioning

HASH JOIN 相关

HASH JOIN

IPC

Hash/GrowBuckets/Allocating

HASH JOIN 相关

HASH JOIN

IPC

Hash/GrowBuckets/Electing

HASH JOIN 相关

HASH JOIN

IPC

Hash/GrowBuckets/Reinserting

HASH JOIN 相关

HASH JOIN

IPC

LogicalSyncData

等待逻辑复制远程服务发送数据,用于初始表同步

逻辑复制

IPC

LogicalSyncData

等待逻辑复制的远程服务器发送用于初始表                  同步的数据

逻辑复制

IPC

LogicalSyncStateChange

等待逻辑复制远程服务改变状态

逻辑复制

IPC

LogicalSyncStateChange

等待逻辑复制的远程服务器更改状态

逻辑复制

IPC

MessageQueueInternal

等待其他进程连接到共享消息队列中

并行执行

IPC

MessageQueueInternal

等待其他进程被挂接到共享消息队列

并行执行

IPC

MessageQueuePutMessage

等待写一条协议消息到共享消息队列中

并行执行

IPC

MessageQueuePutMessage

等待把一个协议消息写到一个共享消息队列

并行执行

IPC

MessageQueueReceive

等待从共享消息队列中接收字节

并行执行

IPC

MessageQueueReceive

等待从一个共享消息队列接收字节

并行执行

IPC

MessageQueueSend

等待向共享消息队列发送字节

并行执行

IPC

MessageQueueSend

等待向一个共享消息队列中发送字节

并行执行

IPC

ParallelBitmapScan

等待并行位图索引扫描初始化

并行执行

IPC

ParallelCreateIndexScan

等待并行 CREATE INDEX 工作者完成堆扫描

并行创建索引

IPC

ParallelFinish

等待并行查询worker结束计算

并行执行

IPC

ParallelFinish

等待并行工作者完成计算

并行执行

IPC

ProcArrayGroupUpdate

当事务结束时等待组leader清除transaction id

长事务,并行执行

IPC

Promote

等待备用节点升级

备库升级

IPC

ReplicationOriginDrop

等待复制源变为非活动状态以被删除

复制槽

IPC

ReplicationOriginDrop

等待一个复制源头变得不活跃以便被删除

复制槽

IPC

ReplicationSlotDrop

等待复制槽变为非活动状态以被删除

复制槽

IPC

ReplicationSlotDrop

等待一个复制槽变得不活跃以便被删除

复制槽

IPC

SafeSnapshot

等 待 一 个 用 于 READ ONLY DEFERRABLE 事务的快照,一般在串行事务隔离级别出现

只读事务、串行隔离级别

IPC

SyncRep

同步复制时等待远程服务确认

同步复制

Lock

advisory

等待获取建议用户锁

并发事务

Lock

cstore_freespace

对列存空闲空间加锁

列存储

Lock

extend

等待扩展 relation结束

文件扩展,并发写入

Lock

filenode

对文件名加锁,文件扩展、TRUNCATE等

并发执行,并发DDL

Lock

frozenid

等待修改 pg_database.datfrozenxid和 pg_database.datminmxid.

VACUUM、磁盘IO性能、数据库配置

Lock

object

除了relation外的其他数据库对象(DB,SCHEMA等)

DDL操作

Lock

page

等待获取relation中的一个页面的锁

热块、SHARED BUFFERS

Lock

partition

保护分区元数据一致性的串行化等待

DDL操作,并发执行

Lock

partition_seq

对分区表的分区加锁

DDL操作,并发执行

Lock

relation

等待获得一个关系上的锁

并发执行

Lock

speculative token

等待获取推测插入锁

热块、事务并发、热表

Lock

subtransactionid

对子事务号加锁

子事务

Lock

transactionid

等待一个事务结束

事务并发

Lock

tuple

等待获取元组(tuple)锁

热块、事务并发

Lock

userlock

等待获取用户锁

用户锁

Lock

virtualxid

等待获取虚拟XID锁

并发执行、活跃会话

LWLock

AddinShmemInit

等待共享内存中的内存空间管理

共享内存初始化

LWLock

AddinShmemInitLock

等待共享内存中的内存空间管理

共享内存初始化

LWLock

AlterPortLock

用于保护CN更改注册端口号的操作

修改端口号

LWLock

ASPMappingLock

用于管理ASP的hash表的并发访存

活跃会话历史数据

LWLock

async

等待async (notify) buffer IO完成

活跃会话、磁盘IO性能

LWLock

Async Ctl

用于保护Async buffer

会话交互

LWLock

AsyncCtlLock

等待读取或者修改共享通知状态

会话数,并发执行,并发事务

LWLock

AsyncQueueLock

等待读取或者修改通知消息

会话数,并发执行,并发事务

LWLock

AutoanalyzeLock

自动分析

自动分析

LWLock

AutoFile

等待修改postgresql.auto.conf 文件

参数文件修改

LWLock

AutoFileLock

等待修改postgresql.auto.conf 文件

参数文件修改

LWLock

Autovacuum

等待Autovacuum worker 或者launcher等待读取或者修改 autovacuum worker的当前状态

VACUUM

LWLock

AutovacuumLock

等待Autovacuum worker 或者launcher等待读取或者修改 autovacuum worker的当前状态

VACUUM

LWLock

AutovacuumSchedule

等待被选择做vacuum 的表仍然需要 vacuuming的确认信息

VACUUM

LWLock

AutovacuumScheduleLock

等待被选择做vacuum 的表仍然需要 vacuuming的确认信息

VACUUM

LWLock

BackendRandomLock

等待生成随机数

随机数生成

LWLock

BackgroundWorker

等待读取后者修改后台worker进程的状态

并行执行,后台进程启动,后台进程关闭

LWLock

BackgroundWorkerLock

等待读取后者修改后台worker进程的状态

并行执行,后台进程启动,后台进程关闭

LWLock

BadBlockStatHashLock

访问坏块统计信息内存数据产生的等待

坏块统计信息

LWLock

BarrierLock

确保主备节点达到一致性的屏障机制

集群高可用

LWLock

BlockchainVersionLock

在不同节点间传递区块链同步信息

区块链

LWLock

BtreeVacuum

等待读取或者修改vacuum相关的B树索引信息

VACUUM,索引

LWLock

BtreeVacuumLock

等待读取或者修改vacuum相关的B树索引信息

VACUUM,索引

LWLock

buffer_content

等待在DB CACHE中读写数据页

磁盘IO性能、热块、DBCACHE

LWLock

buffer_io

等待数据页IO完成

磁盘IO性能、检查点、热块

LWLock

buffer_mapping

等待将数据块与缓冲池中的缓冲区关联

DBCACHE,热块冲突

LWLock

BufferContent

等待在DB CACHE中读写数据页

磁盘IO性能、热块、DBCACHE

LWLock

BufferContent

等待访问内存中的PAGE

DBCACHE,热块冲突

LWLock

BufferContentLock

等待访问内存中的PAGE

DBCACHE,热块冲突

LWLock

BufferIOLock

类似于Oracle的BBW的read by other session

DBCACHE,热块冲突

LWLock

BufferMapping

等待将数据块与缓冲池中的缓冲区关联

DBCACHE,热块冲突

LWLock

BufFreelistLock

会话试图从缓冲区中分配或者释放缓冲区产生的等待

DBCACHE,热块冲突

LWLock

BufMapping

大量会话并发房屋shared buffer的HASH表产生的等待

DBCACHE,热块冲突

LWLock

BufMappingLock

大量会话并发房屋shared buffer的HASH表产生的等待

DBCACHE,热块冲突

LWLock

CacheSlotMappingLock

用于保护CU Cache全局信息

列存

LWLock

CaptureViewFileHashLock

开启性能视图采集时,保护哈希表的并发访存

性能采集

LWLock

CBMParseXlogLock

控制cbm文件(变更位图文件)的并发访存

变更位图文件访问锁,增量备份

LWLock

CheckpointerComm

等待管理fsync 请求

磁盘IO性能,并发写入

LWLock

CheckpointerCommLock

等待管理fsync 请求

磁盘IO性能,并发写入

LWLock

CheckpointLock

等待执行CKPT

并发事务

LWLock

clog

等待CLOG缓冲区的IO操作

事务并发、磁盘IO性能

LWLock

CLOG Ctl

控制各个clog分区信息的并发访存

并发事务,并发DML

LWLock

CLogBufMappingLock

控制共享clog页面映射的并发访存

并发事务,并发DML

LWLock

CLogControlLock

等待读取或者修改事务状态

并发事务

LWLock

CLogTruncationLock

等待执行txid_status 或者将可获得的最老的transaction id赋给它

事务并发、磁盘IO性能、检查点配置

LWLock

ClusterRPLock

用于加速集群的CCN中维护的集群负载数据的并发存取控制(新版本已废弃)

集群负载控制

LWLock

commit_timestamp

等待 commit timestamp buffer IO操作完成

事务并发、参数配置、磁盘IO性能

LWLock

CommitTs

等待 commit timestamp buffer IO操作完成

事务并发、参数配置、磁盘IO性能

LWLock

CommitTsBuffer

为一个commit timestamp SLRU BUFFER等待IO完成

事务并发、参数配置、磁盘IO性能

LWLock

CommitTsControlLock

等待读取或者修改事务提交时间戳

事务提交,页控制相关,DB CACHE,并发事务,

LWLock

CommitTsLock

等待读取或者修改事务时间戳的最后值集合

事务提交,并发事务,

LWLock

CommitTsSLRU

等待访问commit timestamp SLRU CACHE

事务并发、参数配置、磁盘IO性能

LWLock

ConsumerStateLock

用于时序consumer工作状态更新

时序数据压缩

LWLock

ControlFile

等待读取或者修改控制文件,或者创建一个新的WAL文件

DML,并发写入,磁盘IO性能

LWLock

ControlFileLock

等待读取或者修改控制文件,或者创建一个新的WAL文件

DML,并发写入,磁盘IO性能

LWLock

CSNBufMappingLock

控制共享csnlog页面映射的并发访存

全局事务,并发事务

LWLock

CSNLOG Ctl

控制各个csnlog分区信息的并发访存

全局事务,并发事务

LWLock

CsnMinLock

控制csn min信息的并发访存

并发事务,MVCC

LWLock

CStoreColspaceCacheLock

用于保护列存表的CU空间分配

列存储缓冲

LWLock

CStoreCUCacheSweepLock

用于列存CU Cache循环淘汰

列存储缓冲

LWLock

CUSlotListLock

用于存储列存储分布表的数据分布信息,便于为优化器编译提供数据

列存储、SQL解析

LWLock

DataCacheLock

列存模式下CU的并发修改锁

列存储,DML

LWLock

DataFileIdCacheLock

列存模式下CU的并发修改锁

列存储,DML

LWLock

DataSyncRepLock

用于在主备复制时保护数据页同步信息

DML,并发事务、集群同步

LWLock

DelayDDLLock

串行化DDL操作的锁

并发DDL

LWLock

DeleteCompactionLock

VACUUM FULL时需要申请的锁

VACUUM

LWLock

DeleteConsumerLock

SQL执行过程中进行消费者端操作时需要的锁等待。分布式执行、并行执行等都会产生消费者端操作

分布式执行,并行执行

LWLock

DfsConnectorCacheLock

用于保护缓存HDFS连接的句柄的全局哈希表

hdfs

LWLock

DfsSpaceCacheLock

用于控制HDFS表导入时文件ID单调递增

hdf、数据导入

LWLock

DfsUserLoginLock

用于保护HDFS用户信息的全局链表

hdfs、用户登录

LWLock

DnUsedSpaceHashLock

DN节点统计使用空间的排他锁,避免相同的统计任务冲突

DN节点、空间使用统计

LWLock

DoubleWriteLock

保护双写缓冲的闩锁

脏块写

LWLock

dummyServerInfoCacheLock

用于保护缓存加速集群连接信息的全局哈希表

登录、查询连接信息

LWLock

DWSingleFlushFirstLock

Dn节点CKPT增量刷脏块

CKPT增量刷脏块

LWLock

DWSingleFlushPosLock

Dn节点刷新脏块

CKPT增量刷脏块

LWLock

DWSingleFlushWriteLock

Dn节点刷新脏块

CKPT增量刷脏块

LWLock

DynamicSharedMemoryControl

等待读取或者修改动态共享内存状态

动态共享内存分配、释放

LWLock

DynamicSharedMemoryControlLock

等待读取或者修改动态共享内存状态

动态共享内存分配、释放

LWLock

ExtensionConnectorLibLock

连接池建立时加载动态链接库的等待事件

LOGON

LWLock

FdwPartitionCacheLock

多个并发会话并发访问外部表分区缓冲

外部表并发访问

LWLock

FileStatLock

用于保护存储统计文件信息的数据结构

访问文件统计信息

LWLock

FullBuildXlogCopyStartPtrLock

保护全量备份时的日志起始点的轻量级锁

全量备份

LWLock

GeneralExtendedLock

使用扩展的并发量较大

扩展

LWLock

GlobalPrevHashLock

全局前置HASH表操作并发引发,和缓冲、配置信息等全局信息的访问有关

各类缓冲访问

LWLock

GlobalSeqLock

并发访问全局序列号引发的等待

序列号

LWLock

GlobalWorkloadLock

全局WORKLOAD统计信息的访问

AWR

LWLock

GPCClearLock

并发清除全局计划缓冲

计划缓冲、SQL解析

LWLock

GPCCommitLock

用于保护全局Plan Cache hash表的添加操作

SQL解析

LWLock

GPCMappingLock

用于全局Plan Cache缓存管理

SQL解析、高并发执行

LWLock

GPCTimelineLock

用于保护全局Plan Cache hash表检查Timeline的操作

SQL解析(已废弃)

LWLock

GTMHostInfoLock

已废弃

LWLock

gtt_shared_ctl

已废弃

LWLock

HadrSwitchoverLock

主备故障切换

主备切换

LWLock

HypoIndexLock

用于保护假索引的创建和删除

虚拟索引、SQL优化

LWLock

InstanceRealTLock

用于保护共享实例统计信息hash表的更新操作

指标采集

LWLock

InstanceTimeLock

用于获取实例中会话的时间信息

指标采集、会话数过多

LWLock

InstrUserLockId

用户登录登出数据库

用户登录登出

LWLock

InstrWorkloadLock

保护负载管理统计信息的内存hash表访问

指标采集

LWLock

IOStatLock

保护IO资源统计信息的锁

指标采集

LWLock

JobShmemLock

用于定时任务功能中保护定时读取的全局变量

定时任务执行

LWLock

LLVMDumpIRLock

用于导出动态生成函数所对应的汇编语言

SQL解析,LLVM

LWLock

LLVMParseIRLock

用于在查询开始处从IR文件中编译并解析已写好的IR函数

SQL解析,LLVM

LWLock

lock_manager

在并行执行中,等待为后端添加或检查锁,或者等待加入或退出锁组

事务并发

LWLock

LockFastPath

等待更新进程的FAST PATH LOCK信息

事务并发

LWLock

LockManager

在并行执行中,等待为后端添加或检查锁,或者等待加入或退出锁组

事务并发

LWLock

LockMgrLock

在并行执行中,等待为后端添加或检查锁,或者等待加入或退出锁组

事务并发

LWLock

LogicalReplicationSlotPersistentDataLock

用于保护逻辑复制过程中复制槽位的数据

流复制

LWLock

LogicalRepWorkerLock

等待逻辑复制的WORKER结束任务

流复制

LWLock

LsnXlogChkFileLock

用于串行更新特定结构中记录的主备机的xlog flush位置点,保证主备服务器的数据一致性

流复制

LWLock

LWTRANCHE_ACCOUNT_TABLE

控制账户锁定状态hash表的并发读写

安全控制、登录

LWLock

MatviewSeqnoLock

物化视图序号锁等待

物化视图操作相关

LWLock

MaxPageFlushLsnFileLock

用于保护最大页面刷新LSN文件的并发更新

并发DML

LWLock

MetaCacheLock

用于保护MetaCache

并发DML,并发解析

LWLock

MetaCacheSweepLock

保护元数据循环淘汰

缓冲配置、并发解析

LWLock

MPFLLOCK

LWLock

multixact_member

等待 multixact_member buffer IO操作完成

事务并发,磁盘IO性能

LWLock

multixact_offset

等待 multixact offset buffer IO操作完成

事务并发,磁盘IO性能

LWLock

MultiXactGen

等待读取或者修改共享组合事务( multixact)状态

并发事务

LWLock

MultiXactGenLock

等待读取或者修改共享组合事务( multixact)状态

并发事务

LWLock

MultiXactMember Ctl

LWLock

MultiXactMemberBuffer

为一个multixact SLRU buffer等待IO

并发事务

LWLock

MultiXactMemberControlLock

等待读取或者修改组合事务(multixact) 成员映射信息

并发事务

LWLock

MultiXactMemberSLRU

等待访问multixact SLRU CACHE

并发事务

LWLock

MultiXactOffset Ctl

LWLock

MultiXactOffsetBuffer

为一个multixact offset SLRU buffer等待IO

并发事务

LWLock

MultiXactOffsetControlLock

等待读取或者修改组合事务(multixact) 偏移映射信息

并发事务

LWLock

MultiXactOffsetSLRU

等待访问multixact offset SLRU CACHE

并发事务

LWLock

MultiXactTruncation

等待清空multixact 信息

并发事务

LWLock

MultiXactTruncationLock

等待读取或者截断 multixact 信息

事务并发,大事务

LWLock

NGroupMappingLock

对于保护nodegroup哈希表的单个分桶并发修改加锁,用于全局sequence

SEQUENCE,分布式

LWLock

NodeTableLock

用于保护存放数据库节点信息的共享结构,用于保护存放CN和DN节点信息的共享结构1

集群管理

LWLock

NormalizedSqlLock

用于SQL规范化转换

并发解析

LWLock

NotifyBuffer

等待Notify buffer的SLRU缓冲区上的IO

IPC,IO性能

LWLock

NotifyQueue

等待读取或者修改Notify消息

IPC,并发DDL

LWLock

NotifyQueueTail

等待修改通知消息存储限制

ipc

LWLock

NotifyQueueTailLock

等待修改通知消息存储限制

ipc

LWLock

NotifySLRU

等待访问Notify SLRU缓冲

ipc

LWLock

OBSGetPathLock

用于避免对obs路径的写写并发和读写并发,和对象存储有关

对象存储

LWLock

OBSRuntimeLock

用于获取环境变量,如GASSHOME

环境变量

LWLock

OidGen

等待分配或者赋予一个 OID

并发DDL

LWLock

OidGenLock

等待分配或者赋予一个 OID

并发DDL

LWLock

oldserxid

等待oldserxid buffer IO完成

磁盘IO性能,事务并发

LWLock

OldSerXid SLRU Ctl

保护old xids的slru buffer

MVCC,并发事务

LWLock

OldSerXidLock

等待读取或记录冲突的可序列化事务

事务隔离级别,并发事务

LWLock

OldSnapshotTimeMap

等待读取或者修改旧的snapshot控制信息

事务并发,SAVEPOINT

LWLock

OldSnapshotTimeMapLock

等待读取或者修改旧的snapshot控制信息

事务并发,SAVEPOINT

LWLock

OperatorHistLock

用于避免并发访问或者修改记录算子级历史数据的全局结构

并发解析,并发执行

LWLock

OperatorRealTLock

用于避免并发访问或者修改记录算子级实时数据的全局结构

并发解析,并发执行

LWLock

parallel_append

在 Parallel Append 计划执行期间等待选择下一个子计划

并发APPEND写入

LWLock

parallel_hash_join

在 Parallel Hash 计划执行期间等待分配或交换一块内存或者更新计数器

并发HASH JOIN

LWLock

parallel_query_dsa

等待并行查询动态共享内存分配锁

LWLock

ParallelAppend

在 Parallel Append 计划执行期间等待选择下一个子计划

并发APPEND写入

LWLock

ParallelHashJoin

在 Parallel Hash 计划执行期间等待分配或交换一块内存或者更新计数器

并发HASH JOIN

LWLock

ParallelQueryDSA

等待并行查询动态共享内存分配锁

并行执行

LWLock

PartIdCacheLock

分区表的数量过多或者被访问得过于频繁

分区表

LWLock

PartOidCacheLock

分区表的数量过多或者被访问得过于频繁

分区表

LWLock

PercentileLock

全局百分位缓冲区争用,全局PercentileBuffer是GaussDB中的一个全局变量,用于存储每个算子的执行时间的百分位数

并发执行,SQL解析

LWLock

PerSessionDSA

等待并行查询动态共享内存分配锁

并行执行

LWLock

PerSessionRecordType

并行查询中等待匿名记录类型的相关信息(比如CTE)

并行执行

LWLock

PerXactPredicateList

并行查询中等待可序列化的对象的谓词锁定产生的等待

并行执行

LWLock

PgfdwLock

外部访问引发的等待

外部表

LWLock

PGPROCLock

访问进程数组产生的等待

性能监控、并发登录

LWLock

PgStatsData

访问统计信息区域的等待

性能监控

LWLock

PgStatsDSA

访问统计信息区域的等待

性能监控

LWLock

PgStatsHash

访问统计信息区域的等待

性能监控

LWLock

PLdebugger

PL/PGSQL跟踪

PL/PGSQL跟踪

LWLock

PldebugLock

PL/PGSQL跟踪

PL/PGSQL跟踪

LWLock

PoolerLock

试图从数据库连接处中获取或者释放一个连接引发的等待

并发登录,会话数

LWLock

predicate_lock_manager

等待添加或检查谓词锁信息

并发执行

LWLock

PredicateLockManager

等待添加或检查谓词锁信息

并发执行

LWLock

PredicateLockMgrLock

当一个进程试图访问可序列化事务使用的谓词锁定信息时产生的,为了保护谓词锁定管理器的数据结构

并发执行

LWLock

proc

等待读取或者修改快速路径锁的信息

并发锁

LWLock

ProcArray

等待获得snapshot或者在会话结束时清理XID,或者查询XID

并发事务

LWLock

ProcArrayLock

等待获得snapshot或者在会话结束时清理XID,或者查询XID

并发事务

LWLock

ProcXactMappingLock

访问进程数组与事务数组之间的关系产生的等待

并发事务

LWLock

PruneDirtyQueueLock

清理脏页队列产生的等待

数据库配置,脏页

LWLock

RcvWriteLock

防止并发调用WalDataRcvWrite

流复制

LWLock

RelationMapping

等待更新用于存储目录到文件节点映射的关系映射文件

DDL操作

LWLock

RelationMappingLock

等待更新用于存储目录到文件节点映射的关系映射文件

DDL操作

LWLock

RelCacheInit

等待读写 relation cache初始化文件(pg_internal.init)

磁盘IO性能,数据库中表的数量过多

LWLock

RelCacheInitLock

等待读写 relation cache初始化文件(pg_internal.init)

磁盘IO性能,数据库中表的数量过多

LWLock

RelfilenodeReuseLock

避免错误地取消已重用的列属性文件的链接

列存储

LWLock

replication_origin

等待读取或者修改复制进度

数据库复制

LWLock

replication_slot_io

等待复制槽上的IO

数据库复制、磁盘IO性能

LWLock

ReplicationOrigin

等待设置、删除或使用复制源

流复制

LWLock

ReplicationOriginLock

等待设置、删除或使用复制源

流复制

LWLock

ReplicationSlotAllocation

等待分配或者始放一个复制槽

流复制,复制槽

LWLock

ReplicationSlotAllocationLock

等待分配或者始放一个复制槽

流复制,复制槽

LWLock

ReplicationSlotControl

等待读取或者修改复制槽状态

流复制,复制槽

LWLock

ReplicationSlotControlLock

等待读取或者修改复制槽状态

流复制,复制槽

LWLock

ReplicationSlotIO

等待复制SLOT上的IO

流复制,复制槽

LWLock

ReplicationSlotLock

并发访问复制槽

流复制,复制槽

LWLock

ResourcePoolHashLock

等待资源池HASH数据结构,一般是在分配池中连接

并发执行,并发登录

LWLock

RestartPointQueueLock

备机恢复性能存在问题

流复制

LWLock

RoleIdLock

LWLock

RoleIdPartLock

LWLock

RollbackReqHashLock

管理共享内存中存储回滚请求信息的哈希表的并发访存

回滚操作

LWLock

RowPageReplicationLock

用于管理行存储的数据页复制,当数据页在复制时,防止被篡改

副本复制

LWLock

RPNumberLock

用于加速openGauss的数据库节点对正在执行计划的任务线程的计数

并行执行

LWLock

SearchServerLibLock

用于GPU加速场景初始化加载特定动态库时,对读文件操作进行加锁

GPU加速,加载动态链接库

LWLock

SegmentHeadPartitionLock

保护段页式segment头部元信息的分区锁

DDL,分区表

LWLock

SerialBuffer

等待一个用于存储可串行化事务冲突信息的SLRU缓冲区上的IO

IO

LWLock

SerializableFinishedList

等待访问serializable 事务完成清单

事务隔离级别,并发事务

LWLock

SerializableFinishedListLock

等待访问serializable 事务完成清单

事务隔离级别,并发事务

LWLock

SerializablePredicateLockList

等待在一个被serializable事务锁锁定的清单上做操作

事务隔离级别,并发事务

LWLock

SerializablePredicateLockListLock

等待在一个被serializable事务锁锁定的清单上做操作

事务隔离级别,并发事务

LWLock

SerializableXactHashLock

等待检索或者存储serializable事务相关的信息

事务隔离级别,并发事务

LWLock

SerialSLRU

等待一个用于存储可串行化事务冲突信息的SLRU缓冲区

IO

LWLock

SessionHistLock

用于避免并发访问或者修改记录query级历史数据的全局结构

GSP

LWLock

SessionRealTLock

用于避免并发访问或者修改记录query级实时数据的全局结构

GSP

LWLock

SharedTidBitmap

并行BITMAP INDEX SCAN时等待共享TID的访问闩锁

并行执行

LWLock

SharedTupleStore

并行查询时等待访问数据块

并行执行

LWLock

ShmemIndex

等待在共享内存中查找或者分配空间

共享内存操作,并发

LWLock

ShmemIndexLock

等待在共享内存中查找或者分配空间

共享内存操作,并发

LWLock

SInvalRead

等待从共享失效队列中检索或删除消息

并发SQL

LWLock

SInvalReadLock

等待从共享失效队列中检索或删除消息

并发SQL

LWLock

SInvalWrite

等待在共享失效队列中添加消息

并发SQL

LWLock

SInvalWriteLock

等待在共享失效队列中添加消息

并发SQL

LWLock

StartBlockMappingLock

用于globalstat从pgstat获取startblockarray等信息

PGSTATE

LWLock

StreamingEngineConnLock

流引擎连接锁

流引擎

LWLock

StreamingEngineExecLock

流引擎执行所

流引擎

LWLock

subtrans

等待 subtransaction buffer IO操作完成

事务并发,磁盘IO性能

LWLock

SubtransBuffer

等待 subtransaction buffer IO操作完成

事务并发,磁盘IO性能

LWLock

SubtransControlLock

等待读取或者修改子事务信息

并发事务,子事务,SAVEPOINT

LWLock

SubtransSLRU

等待 subtransaction buffer并发访问

事务并发,磁盘IO性能

LWLock

SyncPaxosLock

保护paxos同步队列的并发访存

副本复制

LWLock

SyncRep

等待读取或更新有关同步复制的信息

流复制,同步复制

LWLock

SyncRepLock

等待读取或更新有关同步复制的信息

流复制,同步复制

LWLock

SyncScan

等待获取表上扫描的开始位置以便于进行同步扫描

表或索引扫描操作

LWLock

SyncScanLock

等待获取表上扫描的开始位置以便于进行同步扫描

表或索引扫描操作

LWLock

TablespaceCreate

等待创建或者删除表空间

表空间操作,磁盘IO性能,文件系统

LWLock

TablespaceCreateLock

等待创建或者删除表空间

表空间操作,磁盘IO性能,文件系统

LWLock

tbm

等待 TBM 共享迭代器锁,一般发生在并行bitmap扫描中,等待TID BITMAP

并发执行、索引扫描

LWLock

TDEKeyCacheLock

控制透明加密数据密钥缓存的并发读写

透明加密

LWLock

TsTagsCacheLock

用于时序tag缓存管理

时序数据相关

LWLock

TwoPhaseState

等待读取或者修改prepared transaction的状态

分布式事务

LWLock

TwoPhaseStateLock

等待读取或者修改prepared transaction的状态

分布式事务

LWLock

TwoPhaseStatePartLock

两阶段提交相关的轻量级锁等待

两阶段提交相关的轻量级锁等待

LWLock

UHeapStatLock

保护ustore统计信息的并发访存

ustore统计信息

LWLock

UndoPerZoneLock

保护每个undozone内信息的并发访存

UNDO,USTORE

LWLock

UndoSpaceLock

保护undospace的并发访存

UNDO,USTORE

LWLock

UndoZoneLock

保护undozone的并发访存

UNDO,USTORE

LWLock

UniqueSqlEvictLock

开启Unique SQL回收时,保护哈希表的并发访存

SQL统计信息

LWLock

UniqueSQLMappingLock

用于保护uniquesql hash table

SQL统计信息

LWLock

UnlinkRelHashTblLock

保护共享内存中待删除文件哈希表的并发访存

文件删除

LWLock

UspagrpMappingLock

LWLock

WaitCountHashLock

用于保护用户语句计数功能场景中的共享结构

PGSTAT相关信息统计

LWLock

wal_insert

等待将WAL插入缓冲区

事务并发、WALBUFFER

LWLock

WALBufferInitWait

初始化WAL BUFFER

初始化WAL BUFFER

LWLock

WALBufMapping

等待替换 WAL 缓冲区中的页面

WAL BUFFER,DML,并发写入

LWLock

WALBufMappingLock

等待替换 WAL 缓冲区中的页面

WAL BUFFER,DML,并发写入

LWLock

WALFlushWait

等待WAL文件强制刷盘

等待WAL强制刷盘

LWLock

WALInitSegment

初始化WAL文件

初始化WAL文件

LWLock

WALInsert

用于避免与其它WAL插入操作并发执行

REDO并发,并发DML,并发事务

LWLock

WALInsertLock

用于避免与其它WAL插入操作并发执行

REDO并发,并发DML,并发事务

LWLock

WALWrite

等待从WAL缓冲区中写数据到磁盘

DML,并发写入,磁盘IO性能

LWLock

WALWriteLock

等待从WAL缓冲区中写数据到磁盘

DML,并发写入,磁盘IO性能

LWLock

WALWritePaxosLock

保护向paxos复制组件写wal日志的并发顺序

集群副本复制

LWLock

WorkloadCGroupHashLock

用于避免并发访问或者修改Cgroup信息构成的哈希表

负载采集

LWLock

WorkloadIoStatHashLock

用于避免并发访问或者修改用于统计当前数据库节点的IO信息的哈希表

负载采集

LWLock

WorkloadIOUtilLock

用于保护记录iostat,CPU等负载信息的结构

负载采集

LWLock

WorkloadNodeGroupLock

用于避免并发访问或者修改内存中的nodegroup信息构成的哈希表

负载采集

LWLock

WorkloadRecordLock

用于避免并发访问或修改在内存自适应管理时对数据库主节点收到请求构成的哈希表

负载采集

LWLock

WorkloadSessionInfoLock

保护负载管理session info内存hash表访问

负载采集

LWLock

WorkloadStatHashLock

用于避免并发访问或者修改包含数据库主节点的SQL请求构成的哈希表

负载采集

LWLock

WorkloadUserInfoLock

用于避免并发访问或修改负载管理的用户信息哈希表

负载采集

LWLock

WrapLimitsVacuum

等待修改multixact消耗和transaction id的限制

事务并发,磁盘IO性能,VACUUM、维护WORKER配置

LWLock

WrapLimitsVacuumLock

等待修改multixact消耗和transaction id的限制

事务并发,磁盘IO性能,VACUUM、维护WORKER配置

LWLock

XactBuffer

等待更改事务状态数据,事务状态管理器性能有问题或者IO有问题时会出现该等待

并发事务,io性能

LWLock

XactSLRU

等待更改事务状态数据,事务状态管理器性能有问题时会出现该等待

并发事务

LWLock

XactTruncation

更新事务状态时的等待,出现在清理过期XID,CKPT等

并发事务,VACUUM

LWLock

XidGen

等待生成事务XID

并发事务

LWLock

XidGenLock

等待生成事务XID

并发事务

LWLock

XlogRemoveSegLock

保护Xlog段文件的回收操作

并发事务,WAL配置

STATUS

acquire lock

申请锁

申请锁

STATUS

acquire lwlock

申请轻量级锁

申请轻量级锁

STATUS

analyze

分析操作

表分析操作

STATUS

cancel query

取消某连接上正在执行的SQL语句

取消某连接上正在执行的SQL语句

STATUS

create index

索引创建

索引创建

STATUS

flush data

等待向网络中nodename指定节点的plevel对应线程发送数据。如果状态包含phase信息,则可能的阶段状态为wait quota,即当前通信流正在等待quota值

集群同步

STATUS

get conn

获取到其他节点的连接

获取到其他节点的连接

STATUS

HashAgg - build hash

HASH JOIN

HASH JOIN

STATUS

HashAgg - write file

HASH JOIN

HASH JOIN

STATUS

HashJoin - build hash

HASH JOIN

HASH JOIN

STATUS

HashJoin - write file

HASH JOIN

HASH JOIN

STATUS

HashSetop - build hash

HASH JOIN

HASH JOIN

STATUS

HashSetop - write file

HASH JOIN

HASH JOIN

STATUS

Material

物化视图操作

物化视图操作

STATUS

Material - write file

物化视图操作

物化视图操作

STATUS

NestLoop

NESTED LOOP表连接

NESTED LOOP表连接

STATUS

pooler create conn

等待pooler建立连接,当前正在与nodename                  指定节点建立连接,且仍有N个连接等待建                  立

等待pooler建立连接

STATUS

reset cmd

STATUS

set cmd

当前节点上执行SET命令

在连接上执行SET/RESET/TRANSACTION                  BLOCK LEVEL PARA SET/SESSION LEVEL                  PARA SET,当前正在nodename指定节点上执                  行。

STATUS

Sort

排序操作

排序操作

STATUS

Sort - write file

物理排序操作中的文件写入

物理排序操作中的文件写入

STATUS

stop query

停止某连接上正在执行的查询

停止某连接上正在执行的查询

STATUS

stream get conn

初始化stream flow时,等待与nodename节点的consumer对象建立连接,且当前有N个待建连对象

流复制

STATUS

synchronize quit

stream plan结束时,等待stream线程组内的线程统一退出

流复制

STATUS

vacuum

VACUUM操作

VACUUM操作

STATUS

vacuum full

全量VACUUM操作

全量VACUUM

STATUS

wait active statement

等待作业执行,正在资源负载管控中

资源管理

STATUS

wait cmd

等待完成读取网络通信包

等待完成读取网络通信包

STATUS

wait data sync

等待完成数据页到备机的同步

流复制

STATUS

wait data sync queue

等待把行存的数据页或列存的CU放入同步队列

流复制

STATUS

wait io

等待IO

等待IO

STATUS

wait memory

等待内存获取

流复制

STATUS

wait node

等待接收与某节点的连接上的数据,当前正在等待nodename节点plevel线程的数据,且仍有N个连接的数据待返回

流复制

STATUS

wait pooler abort conn

等待pooler完成终止连接

等待pooler完成终止连接

STATUS

wait pooler clean conn

等待pooler完成清理连接

等待pooler完成清理连接

STATUS

wait pooler get conn

等待pooler完成获取连接

等待pooler完成获取连接

STATUS

wait producer ready

初始化stream flow时,等待每个producer都准备好,当前正在等待nodename节点plevel对应线程的producer对象准备好,且仍有N个producer对象处于等待状态

流复制

STATUS

wait reserve td

ustore itl等待

ustore itl等待

STATUS

wait stream group destroy

流复制

流复制

STATUS

wait sync consumer next step

Stream算子等待消费者执行

流复制

STATUS

wait sync producer next step

Stream算子等待生产者执行

流复制

STATUS

wait transaction sync

等待xid指定事务同步

流复制

STATUS

wait wal sync

等待特定LSN的wal log完成到备机的同步

流复制

Timeout

BaseBackupThrottle

在基础备份时等待限流

备份

Timeout

PgSleep

进程处于 pg_sleep等待

Timeout

RecoveryApplyDelay

在恢复时因为WAL延迟到达产生的等待

实例恢复

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论