Updated on 2024-08-20 GMT+08:00

PG_THREAD_WAIT_STATUS

PG_THREAD_WAIT_STATUS allows you to test the block waiting status about the backend thread and auxiliary thread of the current instance.

Table 1 PG_THREAD_WAIT_STATUS columns

Name

Type

Description

node_name

text

Current node name.

db_name

text

Database name.

thread_name

text

Thread name.

query_id

bigint

Query ID. It is equivalent to debug_query_id.

tid

bigint

Thread ID of the current thread.

sessionid

bigint

Current session ID.

lwtid

integer

Lightweight thread ID of the current thread.

psessionid

bigint

Parent session ID.

tlevel

integer

Level of the streaming thread.

smpid

integer

Concurrent thread ID.

wait_status

text

Waiting status of the current thread. For details about the waiting status, see Table 2.

wait_event

text

If wait_status is set to acquire lock, acquire lwlock, or wait io, this column describes the lock, lightweight lock, and I/O information, respectively. Otherwise, this column is empty.

locktag

text

Information about the lock that the current thread is waiting to obtain.

lockmode

text

Lock mode that the current thread is waiting to obtain. The values include table-level lock, row-level lock, and page-level lock modes.

block_sessionid

bigint

ID of the session that blocks the current thread from obtaining the lock.

global_sessionid

text

Global session ID.

The waiting states in the wait_status column are as follows.

Table 2 Waiting states

Value

Description

none

Waiting for no event.

acquire lock

Waiting for locking until the locking succeeds or times out.

acquire lwlock

Waiting for a lightweight lock.

wait io

Waiting for I/O completion.

wait cmd

Waiting for reading network communication packets to complete.

wait pooler get conn

Waiting for pooler to obtain connections.

wait pooler abort conn

Waiting for pooler to terminate connections.

wait pooler clean conn

Waiting for pooler to clear connections.

pooler create conn: [nodename], total N

Waiting for the pooler to set up a connection. The connection is being established with the node specified by nodename, and there are N connections waiting to be set up.

get conn

Obtaining the connection to other nodes.

set cmd: [nodename]

Waiting for running the SET, RESET, TRANSACTION BLOCK LEVEL PARA SET, or SESSION LEVEL PARA SET statement on the connection. The statement is being executed on the node specified by nodename.

cancel query

Canceling the SQL statement that is being executed through the connection.

stop query

Stopping the query that is being executed through the connection.

wait node: [nodename](plevel), total N, [phase]

Waiting for receiving data from a connected node. The thread is waiting for data from the plevel thread of the node specified by nodename. The data of N connections is waiting to be returned. If phase is included, the possible phases are as follows:
  • begin: The transaction is being started.
  • commit: The transaction is being committed.
  • rollback: The transaction is being rolled back.

wait transaction sync: xid

Waiting for synchronizing the transaction specified by xid.

wait wal sync

Waiting for the completion of WAL of synchronization from the specified LSN to the standby instance.

wait data sync

Waiting for the completion of data page synchronization to the standby instance.

wait data sync queue

Waiting for putting the data pages that are in the row-store into the synchronization queue.

flush data: [nodename](plevel), [phase]

Waiting for sending data to the plevel thread of the node specified by nodename. If phase is included, the possible phase is wait quota, indicating that the current communication flow is waiting for the quota value.

stream get conn: [nodename], total N

Waiting for connecting to the consumer object of the node specified by nodename when the stream flow is initialized. There are N consumers waiting to be connected.

wait producer ready: [nodename](plevel), total N

Waiting for each producer to be ready when the stream flow is initialized. The thread is waiting for the procedure of the plevel thread on the nodename node to be ready. There are N producers waiting to be ready.

synchronize quit

Waiting for the threads in the stream thread group to quit when the stream plan ends.

wait stream nodegroup destroy

Waiting for destroying the stream node group when the stream plan ends.

wait active statement

Waiting for job execution under resource and load control.

analyze: [relname], [phase]

Executing ANALYZE for the relname table. If phase is included, the possible phase is autovacuum, indicating that the database automatically enables the AutoVacuum thread to execute ANALYZE.

vacuum: [relname], [phase]

Executing VACUUM for the relname table. If phase is included, the possible phase is autovacuum, indicating that the database automatically enables the AutoVacuum thread to execute VACUUM.

vacuum full: [relname]

Executing VACUUM FULL for the relname table.

create index

Creating an index.

HashJoin - [ build hash | write file ]

The HashJoin operator is being executed. In this phase, you need to pay attention to the execution time-consuming.
  • build hash: The HashJoin operator is creating a hash table.
  • write file: The HashJoin operator is writing data to disks.

HashAgg - [ build hash | write file ]

The HashAgg operator is being executed. In this phase, you need to pay attention to the execution time-consuming.
  • build hash: The HashAgg operator is creating a hash table.
  • write file: The HashAgg operator is writing data to disks.

HashSetop - [build hash | write file ]

The HashSetop operator is being executed. In this phase, you need to pay attention to the execution time-consuming.
  • build hash: The HashSetop operator is creating a hash table.
  • write file: The HashSetop operator is writing data to disks.

Sort | Sort - [fetch tuple | write file]

The Sort operator is used for sorting. fetch tuple indicates that the Sort operator is obtaining tuples, and write file indicates that the Sort operator is writing data to disks.

Material | Material - write file

The Material operator is being executed. write file indicates that the Material operator is writing data to disks.

NestLoop

The NestLoop operator is being executed.

wait memory

Waiting for obtaining the memory.

wait sync consumer next step

Waiting for the consumer to execute the stream operator.

wait sync producer next step

Waiting for the producer to execute the stream operator.

vacuum gpi

Clearing the global partitioned index in the vacuum or autovacuum process.

standby read recovery conflict

The read-only mode of the standby node conflicts with the log replay mode.

standby get snapshot

The standby node obtains the snapshot in read-only mode.

prune table

Waiting for a heap table to clear historical deleted data.

prune index

Waiting for an index to clear historical deleted data.

wait reserve td

Waiting for the Ustore transaction slot allocation.

wait td rollback

Waiting for the Ustore transaction slot to roll back transactions.

wait available td

Waiting for an available transaction slot for Ustore.

wait transaction rollback

Waiting for a transaction to roll back.

wait sync bgworkers

Waiting for an index subthread created in parallel to complete local scanning and sorting.

wait io control

Waiting for job execution under I/O control.

wait gs_sleep

Waiting for the server thread delay.

wait vacuum delay

Waiting for VACUUM delay.

wait seq scan

Execution time of seq scan.

wait index scan

Execution time of index scan.

wait checkpoint start

Start time of the checkpoint phase.

wait checkpoint done

End time of the checkpoint phase.

wait xact start command

Start time of xact.

wait xact commit command

Commit time of xact.

wait for autoextend partition

Waiting for the partitioned table to automatically expand and create partitions.

Accept client conn - Total Time

Total duration from the time when a connection is established to the time when the connection is successful (after the GaussDB receives a connection request from a client).

Accept client conn - ThrdPool - add epoll

Duration from the time when a connection is established to the time when the thread pool adds the session handle to the epoll in thread pool mode (after the GaussDB receives a connection request from a client).

Accept client conn - ThrdPool - wait worker

Duration from the time when the thread pool adds the session handle to the epoll to the time when the working thread pool starts to work in thread pool mode (after the GaussDB receives a connection request from a client).

Accept client conn - ThrdPool - init session

Duration from the time when the working thread pool starts to work to the time the session initialization ends in thread pool mode (after the GaussDB receives a connection request from a client).

Accept client conn - Worker - init proc

(After the GaussDB receives a connection request from a client) Duration from the time when a connection is established to the time when the thread initialization ends in non-thread pool mode.

Accept client conn - Worker - init session

(After the GaussDB receives a connection request from a client) Duration from the time when the thread initialization ends to the time when the session initialization ends in non-thread pool mode.

security audit write pipe

Waiting for an audit log to be written to the pipe.

If wait_status is acquire lwlock, acquire lock, or wait io, there is an event performing I/O operations or waiting for obtaining the corresponding lightweight lock or transaction lock.

The following table describes the corresponding wait events when wait_status is acquire lwlock. If wait_event is extension, the lightweight lock is dynamically allocated and is not monitored.

Table 3 List of wait events corresponding to lightweight locks

wait_event

Description

ShmemIndexLock

Used to protect the primary index table, a hash table, in shared memory.

OidGenLock

Used to prevent different threads from generating the same OID.

XidGenLock

Used to prevent two transactions from obtaining the same XID.

ProcArrayLock

Used to prevent concurrent access to or concurrent modification on the ProcArray shared array.

SInvalReadLock

Used to prevent concurrent execution with invalid message deletion.

SInvalWriteLock

Used to prevent concurrent execution with invalid message write and deletion.

WALInsertLock

Used to prevent concurrent execution with WAL insertion.

WALWriteLock

Used to prevent concurrent write from a WAL buffer to a disk

ControlFileLock

Used to prevent concurrent read/write or concurrent write/write on the pg_control file.

CheckpointLock

Used to prevent multi-checkpoint concurrent execution.

CLogControlLock

Used to prevent concurrent access to or concurrent modification on the Clog control data structure.

SubtransControlLock

Used to prevent concurrent access to or concurrent modification on the subtransaction control data structure.

MultiXactGenLock

Used to allocate a unique MultiXact ID in serial mode.

MultiXactOffsetControlLock

Used to prevent concurrent read/write or concurrent write/write on pg_multixact/offset.

MultiXactMemberControlLock

Used to prevent concurrent read/write or concurrent write/write on pg_multixact/members.

RelCacheInitLock

Used to add a lock before any operations are performed on the init file when messages are invalid.

CheckpointerCommLock

Used to send file flush requests to a checkpointer. The request structure needs to be inserted to a request queue in serial mode.

TwoPhaseStateLock

Used to prevent concurrent access to or modification on two-phase information sharing arrays.

TablespaceCreateLock

Used to check whether a tablespace exists.

BtreeVacuumLock

Used to prevent VACUUM from clearing pages that are being used by B-tree indexes.

AutovacuumLock

Used to access the autovacuum worker array in serial mode.

AutovacuumScheduleLock

Used to distribute tables requiring VACUUM in serial mode.

AutoanalyzeLock

Used to obtain and release resources related to a task that allows for autoanalyze execution.

SyncScanLock

Used to determine the start position of a relfilenode during heap scanning.

NodeTableLock

Used to protect a shared structure that stores database node information.

PoolerLock

Used to prevent two threads from simultaneously obtaining the same connection from a connection pool.

RelationMappingLock

Used to wait for the mapping file between system catalogs and storage locations to be updated.

Async Ctl

Used to protect asynchronization buffers.

AsyncCtlLock

Used to prevent concurrent access to or concurrent modification on the sharing notification status.

AsyncQueueLock

Used to prevent concurrent access to or concurrent modification on the sharing notification queue.

SerializableXactHashLock

Used to prevent concurrent read/write or concurrent write/write on a sharing structure for serializable transactions.

SerializableFinishedListLock

Used to prevent concurrent read/write or concurrent write/write on a shared linked list for completed serial transactions.

SerializablePredicateLockListLock

Used to protect a linked list of serializable transactions that have locks.

OldSerXidLock

Used to protect a structure that records serializable transactions that have conflicts.

FileStatLock

Used to protect a data structure that stores statistics file information.

SyncRepLock

Used to protect Xlog synchronization information during primary-standby replication.

DataSyncRepLock

Used to protect data page synchronization information during primary-standby replication.

MetaCacheSweepLock

Used to add a lock when metadata is cyclically washed out.

ExtensionConnectorLibLock

Used to add a lock when a specific dynamic library is loaded or uninstalled in ODBC connection initialization scenarios.

SearchServerLibLock

Used to add a lock on the file read operation when a specific dynamic library is initially loaded in GPU-accelerated scenarios.

LsnXlogChkFileLock

Used to serially update the Xlog flush points for primary and standby servers recorded in a specific structure.

ReplicationSlotAllocationLock

Used to add a lock when a primary server allocates streaming replication slots during primary-standby replication.

ReplicationSlotControlLock

Used to prevent concurrent update of replication slot status during primary-standby replication.

ResourcePoolHashLock

Used to prevent concurrent access to or concurrent modification on a resource pool table, a hash table.

WorkloadStatHashLock

Used to prevent concurrent access to or concurrent modification on a hash table that contains SQL requests from the primary node of the database.

WorkloadIoStatHashLock

Used to prevent concurrent access to or concurrent modification on a hash table that contains I/O information of the current database node.

WorkloadCGroupHashLock

Used to prevent concurrent access to or concurrent modification on a hash table that contains Cgroup information.

OBSGetPathLock

Used to prevent concurrent read/write or concurrent write/write on an OBS path.

WorkloadUserInfoLock

Used to prevent concurrent access to or concurrent modification on a hash table that contains user information about load management.

WorkloadRecordLock

Used to prevent concurrent access to or concurrent modification on a hash table that contains requests received by the primary node of the databases during adaptive memory management.

WorkloadIOUtilLock

Used to protect a structure that records iostat and CPU load information.

WorkloadNodeGroupLock

Used to prevent concurrent access to or concurrent modification on a hash table that contains node group information in memory.

JobShmemLock

Used to protect global variables in the shared memory that is periodically read during a scheduled job.

OBSRuntimeLock

Used to obtain environment variables, for example, GAUSSHOME.

LLVMDumpIRLock

Used to export the assembly language for dynamically generating functions.

LLVMParseIRLock

Used to compile and parse a finished IR function from the IR file at the start position of a query.

CriticalCacheBuildLock

Used to load caches from a shared or local cache initialization file.

WaitCountHashLock

Used to protect a shared structure in user statement counting scenarios.

BufMappingLock

Used to protect operations on a table mapped to shared buffer.

LockMgrLock

Used to protect a common lock structure.

PredicateLockMgrLock

Used to protect a lock structure that has serializable transactions.

OperatorRealTLock

Used to prevent concurrent access to or concurrent modification on a global structure that contains real-time data at the operator level.

OperatorHistLock

Used to prevent concurrent access to or concurrent modification on a global structure that contains historical data at the operator level.

SessionRealTLock

Used to prevent concurrent access to or concurrent modification on a global structure that contains real-time data at the query level.

SessionHistLock

Used to prevent concurrent access to or concurrent modification on a global structure that contains historical data at the query level.

BarrierLock

Used to ensure that only one thread is creating a barrier at a time

dummyServerInfoCacheLock

Used to protect a global hash table where the information about database connections is cached.

RPNumberLock

Used by a database node on a computing GaussDB to count the number of threads for a task where plans are being executed.

CBMParseXlogLock

Used to protect the lock used when CBM parses Xlogs.

RelfilenodeReuseLock

Used to prevent the link to a reused column attribute file from being canceled by mistake.

RcvWriteLock

Used to prevent concurrent call of WalDataRcvWrite.

PercentileLock

Used to protect global percentile buffers.

CSNBufMappingLock

Used to protect CSN pages.

UniqueSQLMappingLock

Used to protect a unique SQL hash table.

DelayDDLLock

Used to prevent concurrent DDL operations.

CLOG Ctl

Used to prevent concurrent access to or concurrent modification on the Clog control data structure.

Async Ctl

Used to protect asynchronization buffers.

MultiXactOffset Ctl

Used to protect SLRU buffers of a MultiXact offset.

MultiXactMember Ctl

Used to protect SLRU buffers of a MultiXact member.

OldSerXid SLRU Ctl

Used to protect SLRU buffers of old transaction IDs.

ReplicationSlotLock

Used to protect a replication slot.

PGPROCLock

Used to protect the PGPROC structure.

MetaCacheLock

Used to protect meta caches.

DataCacheLock

Used to protect data caches.

InstrUserLock

Used to protect InstrUserHTAB.

BadBlockStatHashLock

Used to protect the hash table global_bad_block_stat.

BufFreelistLock

Used to ensure the atomicity of free list operations in the shared buffer.

AddinShmemInitLock

Used to protect the initialization of the shared memory object.

AlterPortLock

Used to protect the coordinator node from changing the registration port number.

FdwPartitionCaheLock

Management lock of the buffer of the HDFS partitioned table.

DfsConnectorCacheLock

Management lock of the DFSConnector buffer.

DfsSpaceCacheLock

Management lock of the HDFS tablespace management buffer.

FullBuildXlogCopyStartPtrLock

Used to protect Xlog copy operations in the full build.

DfsUserLoginLock

Used for HDFS user login and authentication.

LogicalReplicationSlotPersistentDataLock

Used to protect data in the replication slot during logical replication.

PgfdwLock

Used by the management instance to establish a connection to the foreign server.

InstanceTimeLock

Used to obtain time information of sessions in an instance.

XlogRemoveSegLock

Used to protect Xlog segment file recycling.

DnUsedSpaceHashLock

Used to update space usage information corresponding to a session.

CsnMinLock

Used to calculate CSNmin.

GPCCommitLock

Used to protect the addition of the global Plan Cache hash table.

GPCClearLock

Used to protect the clearing of the global plan cache hash table.

GPCTimelineLock

Used to protect the timeline check of the global plan cache hash table.

InstanceRealTLock

Used to protect the update of the hash table that stores shared instance statistics.

CLogBufMappingLock

Used to manage the cache of commit logs.

GPCMappingLock

Used to manage the global plan cache.

GPCPrepareMappingLock

Used to manage the global plan cache.

BufferIOLock

Used to protect I/O operations on pages in the shared buffer.

BufferContentLock

Used to protect the read and modification of the page content in the shared buffer.

CSNLOG Ctl

Used for CSN log management.

DoubleWriteLock

Used to manage doublewrite operations.

RowPageReplicationLock

Used to manage data page replication of row-store.

MatviewSeqnoLock

Used to manage the cache of materialized views.

GPRCMappingLock

Used to manage the access and modification operations of the global cache hash table of autonomous transactions.

extension

Other lightweight locks.

wait active statement

Waiting for job execution under resource and load control.

wait memory

Waiting for obtaining the memory.

IOStatLock

Used to concurrently maintain the hash table of resource management I/O statistics.

StartBlockMappingLock

Used by globalstat to obtain information such as startblockarray from pgstat.

PldebugLock

Used to debug stored procedures and perform concurrent maintenance operations.

DataFileIdCacheLock

Used to manage the concurrent access and storage of hash table that stores data file descriptor in the shared memory.

GTMHostInfoLock

Used to protect the concurrent access and storage of shared GTM host information.

TwoPhaseStatePartLock

Used to protect the status information of two-phase transactions (in each partition).

WALBufMappingLock

Used to protect the mapping between WAL buffer page and LSN offset.

UndoZoneLock

Used to protect the concurrent access and storage of undo zone.

RollbackReqHashLock

Used to protect the concurrent access and storage of hash table that stores the rollback request in the shared memory.

UHeapStatLock

Used to protect the concurrent access and storage of Ustore statistics.

WALWritePaxosLock

Used to protect the concurrent sequence of WAL log written to the paxos replication component.

SyncPaxosLock

Used to protect the concurrent access and storage of paxos synchronization queue.

BackgroundWorkerLock

Used to protect the concurrent sequence of background workers.

HadrSwitchoverLock

Used to protect the concurrent sequence of DR switchover.

HashUidLock

Used to protect the concurrent sequence of UID allocation.

ParallelDecodeLock

Used to protect the concurrent sequence of parallel decoding.

XLogMaxCSNLock

Used to protect the maximum volume of CSNs that can be restored locally in DR mode.

DisasterCacheLock

Used to protect the concurrent access and storage of DR cache information in the shared memory.

MaxCSNArrayLock

Used to protect the restoration progress of standby node CSNs in each shard in the shared memory.

RepairBadBlockStatHashLock

Used to protect the concurrent access and storage of the hash table that stores damaged pages in the shared memory.

HypoIndexLock

Used to create, delete and reset the virtual index by the lightweight lock.

XGBoostLibLock

Used by DB4AI to call the XGBoost library.

DropArchiveSlotLock

Used to protect the concurrent sequence of deleting the archive slot.

ProcXactMappingLock

Used to protect the concurrent access and storage of the hash table that stores the mapping information between transaction IDs and threads.

UndoPerZoneLock

Used to protect the concurrent access and storage of each information in undo zone.

UndoSpaceLock

Used to protect the concurrent access and storage of undo space.

SnapshotBlockLock

Used to control the concurrent sequence of snapshot-based backup and disk flushing.

DWSingleFlushFirstLock

Used to control the concurrent sequence of non-segment-pages and single-page doublewrite files.

DWSingleFlushSecondLock

Used to control the concurrent sequence of segment-pages and single-page doublewrite files.

DWSingleFlushSecondBufTagLock

Used to control the concurrent access and storage of metadata of segment-pages and single-page doublewrite files.

RestartPointQueueLock

Used to control the concurrent access and storage of restart point arrays on the standby node.

UnlinkRelHashTblLock

Used to protect the concurrent access and storage of the hash table that restores files to be deleted.

UnlinkRelForkHashTblLock

Used to protect the concurrent access and storage of the hash table that restores the fork files to be deleted.

WALFlushWait

Used to protect the concurrent sequence of log flushing.

WALConsensusWait

Used to protect the transaction commit or log replay which is performed only when the logs are consistent.

WALBufferInitWait

Used to protect the initialization and disk flushing sequence of WAL pages in the shared memory.

WALInitSegment

Used to protect the initialization sequence of WAL segment files.

SegmentHeadPartitionLock

Used to protect the partition lock of metadata in the segment-page header.

PgwrSyncQueueLock

Used to protect the concurrent access and storage of file queues to be flushed to disks.

BarrierHashTblLock

Used to protect the concurrent access and storage of barrier tables in the shared memory.

PageRepairHashTblLock

Used to protect the concurrent access and storage of hash table that stores repaired pages.

FileRepairHashTblLock

Used to protect the concurrent access and storage of the hash table that stores repaired files.

InstrUserLockId

Used to protect the concurrent modification of the hash table that stores user login and logout records.

GsStackLock

Used to ensure that the gs_tack function is not concurrently invoked.

InstrStmtTrackCtlLock

Used to protect the concurrent access and storage of the hash table when full SQL statements are dynamically enabled.

CaptureViewFileHashLock

Used to protect the concurrent access and storage of the hash table when capturing the performance view.

UniqueSqlEvictLock

Used to protect the concurrent access and storage of the hash table when the unique SQL reclamation is enabled.

gtt_shared_ctl

Used to protect concurrent read and write of the hash table that stores the global temporary tables.

AuditIndexFileLock

Used to protect concurrent read and write of index files in the audit log.

TDEKeyCacheLock

Used to control the concurrent read and write of cached data keys encrypted transparently.

BlockchainVersionLock

Used to control the concurrent read and write of global block numbers in the ledger database.

GlobalPrevHashLock

Used to control the concurrent read and write of global verification hash tables in the ledger database.

LWTRANCHE_ACCOUNT_TABLE

Used to control the concurrent read and write of the hash table that stores the account locking status.

The following table describes the corresponding wait events when wait_status is wait io.

Table 4 List of wait events corresponding to I/Os

wait_event

Description

BufFileRead

Reads data from a temporary file to a specified buffer.

BufFileWrite

Writes the content of a specified buffer to a temporary file.

ControlFileRead

Reads the pg_control file, mainly during database startup, checkpoint execution, and primary/standby verification.

ControlFileSync

Flushes the pg_control file to a disk, mainly during database initialization.

ControlFileSyncUpdate

Flushes the pg_control file to a disk, mainly during database startup, checkpoint execution, and primary/standby verification.

ControlFileWrite

Writes the pg_control file, during database initialization.

ControlFileWriteUpdate

Updates the pg_control file, mainly during database startup, checkpoint execution, and primary/standby verification.

CopyFileRead

Reads a file during file copying.

CopyFileWrite

Writes a file during file copying.

DataFileExtend

Writes a file during file name extension.

DataFileFlush

Flushes a table data file to a disk.

DataFileImmediateSync

Flushes a table data file to a disk immediately.

DataFilePrefetch

Reads a table data file asynchronously.

DataFileRead

Reads a table data file synchronously.

DataFileSync

Flushes table data file modifications to a disk.

DataFileTruncate

Truncates a table data file.

DataFileWrite

Writes a table data file.

LockFileAddToDataDirRead

Reads the postmaster.pid file.

LockFileAddToDataDirSync

Flushes the postmaster.pid file to a disk.

LockFileAddToDataDirWrite

Writes PID information into the postmaster.pid file.

LockFileCreateRead

Reads the LockFile file %s.lock.

LockFileCreateSync

Flushes the LockFile file %s.lock to a disk.

LockFileCreateWRITE

Writes PID information into the LockFile file %s.lock.

RelationMapRead

Reads the mapping file between system catalogs and storage locations.

RelationMapSync

Flushes the mapping file between system catalogs and storage locations to a disk.

RelationMapWrite

Writes the mapping file between system catalogs and storage locations.

ReplicationSlotRead

Reads a streaming replication slot file during a restart.

ReplicationSlotRestoreSync

Flushes a streaming replication slot file to a disk during a restart.

ReplicationSlotSync

Flushes a temporary streaming replication slot file to a disk during checkpoint execution.

ReplicationSlotWrite

Writes a temporary streaming replication slot file during checkpoint execution.

SLRUFlushSync

Flushes the pg_clog, pg_subtrans, and pg_multixact files to a disk, mainly during checkpoint execution and database shutdown.

SLRURead

Reads the pg_clog, pg_subtrans, and pg_multixact files.

SLRUSync

Writes dirty pages into the pg_clog, pg_subtrans, and pg_multixact files, and flushes the files to a disk, mainly during checkpoint execution and database shutdown.

SLRUWrite

Writes the pg_clog, pg_subtrans, and pg_multixact files.

TimelineHistoryRead

Reads the timeline history file during database startup.

TimelineHistorySync

Flushes the timeline history file to a disk during database startup.

TimelineHistoryWrite

Writes to the timeline history file during database startup.

TwophaseFileRead

Reads the pg_twophase file, mainly during two-phase transaction commit and restoration.

TwophaseFileSync

Flushes the pg_twophase file to a disk, mainly during two-phase transaction commit and restoration.

TwophaseFileWrite

Writes the pg_twophase file, mainly during two-phase transaction commit and restoration.

WALBootstrapSync

Flushes an initialized WAL file to a disk during database initialization.

WALBootstrapWrite

Writes an initialized WAL file during database initialization.

WALCopyRead

Reads operation generated when an existing WAL file is read for replication after archiving and restoration.

WALCopySync

Flushes a replicated WAL file to a disk after archiving and restoration.

WALCopyWrite

Writes operation generated when an existing WAL file is read for replication after archiving and restoration.

WALInitSync

Flushes a newly initialized WAL file to a disk during log reclaiming or writing.

WALInitWrite

Initializes a newly created WAL file to 0 during log reclaiming or writing.

WALRead

Reads data from Xlogs during redo operations on two-phase files.

WALSyncMethodAssign

Flushes all open WAL files to a disk.

WALWrite

Writes a WAL file.

WALBufferAccess

Used to access WAL buffer. (To ensure performance, only the number of access times is counted in the kernel code, and the access duration is not counted.)

WALBufferFull

Used to write WAL files when the WAL buffer is full.

DoubleWriteFileRead

Doublewrites and reads a file.

DoubleWriteFileSync

Doublewrites a file and forcibly flushes files to disks.

DoubleWriteFileWrite

Doublewrites a file and writes a file.

PredoProcessPending

Waits for the replay of other records to complete during parallel log replay.

PredoApply

Waits for the replay of other threads to the LSN of the current thread during parallel log replay.

DisableConnectFileRead

Reads the HA lock fragment logic file.

DisableConnectFileSync

Forcibly flushes the HA lock fragment logic file to disks.

DisableConnectFileWrite

Writes the HA lock fragment logic file.

BufHashTableSearch

Searches the hash table in the shared buffer (page eviction may be triggered).

StrategyGetBuffer

Obtains pages from strategy buffer (page eviction may be triggered).

UndoFileExtend

Extends an undo file.

UndoFilePrefetch

Prefetches an undo file.

UndoFileRead

Reads an undo file.

UndoFileWrite

Writes an undo file.

UndoFileSync

Flushes an undo file to a disk.

UndoFileUnlink

Deletes an undo file.

UndoMetaSync

Flushes an undo metadata file to a disk.

DWSingleFlushGetPos

Searches for an available location for a single-page doublewrite file.

DWSingleFlushWrite

Flushes a single-page doublewrite file to a disk.

CkptWaitPageWriterFlush

Waits for page refreshing during full checkpoint execution.

CkptWaitPageWriterSync

Waits for the modified file to be synchronized to the disk before checkpointing.

CkptWaitCommitTransactionFinish

Waits until all transactions are committed before checkpointing.

MPFL_INIT

Initiates max_page_flush_lsn.

MPFL_READ

Reads max_page_flush_lsn.

MPFL_WRITE

Writes max_page_flush_lsn.

OBSList

Traverses an OBS directory.

OBSRead

Reads an OBS object.

OBSWrite

Writes an OBS object.

LOGCTRL_SLEEP

Waits for the standby node to catch up with logs.

ShareStorageWalRead

Reads log files from the shared disk.

ShareStorageWalWrite

Writes log files to the shared disk.

ShareStorageCtlInfoRead

Reads control information from the shared disk.

ShareStorageCtlInfoWrite

Writes control information to the shared disk.

SegFileExtend

Extends segment-page files.

SegReadDisk

Reads segment-page files.

SegWriteDisk

Writes segment-page files.

SegSync

Flushes segment-page files.

SegFileShrink

Collapses segment-page files.

The following table describes the corresponding wait events when wait_status is acquire lock.

Table 5 List of wait events corresponding to transaction locks

wait_event

Description

relation

Adds a lock to a table.

extend

Adds a lock to a table being scaled out.

partition

Adds a lock to a partitioned table.

partition_seq

Adds a lock to a partition of a partitioned table.

page

Adds a lock to a table page.

tuple

Adds a lock to a tuple on a page.

transactionid

Adds a lock to a transaction ID.

virtualxid

Adds a lock to a virtual transaction ID.

object

Adds a lock to an object.

userlock

Adds a lock to a user.

advisory

Adds an advisory lock.

filenode

Adds a lock to a file name and controls the concurrent sequence of file-level operations.

subtransactionid

Adds a lock to a sub-transaction ID.

tuple_uid

Adds a lock to the hidden column of a tuple UID.