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

PG_LOCKS

PG_LOCKS displays information about locks held by open transactions. For details about the columns, see Table 1.

Table 1 PG_LOCKS columns

Name

Type

Reference

Description

locktype

text

-

Type of the locked object. The value can be relation, extend, page, tuple, transactionid, virtualxid, object, userlock, or advisory.

database

oid

OID in PG_DATABASE

OID of the database in which the locked target exists.

  • The OID is 0 if the target is a shared object.
  • The OID is NULL if the locked object is a transaction.

relation

oid

OID in PG_CLASS

OID of the relationship targeted by the lock (NULL if the object is not a relation or part of a relation).

page

integer

-

Page number targeted by the lock within the relation (NULL if the object is not a relation page or row page).

tuple

smallint

-

Row number targeted by the lock within the page (NULL if the object is not a row).

bucket

integer

-

Hash bucket ID.

virtualxid

text

-

ID of the virtual transaction The value is NULL if the object is not a virtual transaction.

transactionid

xid

-

ID of the transaction. The value is NULL if the object is not a transaction.

classid

oid

OID in PG_CLASS

OID of the system catalog that contains the object (NULL if the object is not a general database object).

objid

oid

-

OID of the lock target within its system catalog (NULL if the target is not a general database object).

objsubid

smallint

-

Column number for a column in the table. The value is 0 if the object is some other object type. The value is NULL if the object is not a general database object.

virtualtransaction

text

-

Virtual ID of the virtual transaction holding or awaiting this lock.

pid

bigint

-

Logical ID of the server thread holding or awaiting this lock. The value is NULL if the lock is held by a prepared transaction.

sessionid

bigint

-

ID of the session that holds or waits for the lock.

mode

text

-

Lock mode held or desired by this thread.

The value can be AccessShareLock, RowShareLock, RowExclusiveLock, ShareLock, ShareRowExclusiveLock, ExclusiveLock, or AccessExclusiveLock.

granted

boolean

-

  • The value is TRUE if the lock is a held lock.
  • The value is FALSE if the lock is an awaited lock.

fastpath

boolean

-

The value is TRUE if the lock is obtained through fast-path, and is FALSE if the lock is obtained through the main lock table.

locktag

text

-

Lock information that the session waits for. It can be parsed using the locktag_decode() function.

global_sessionid

text

-

Global session ID.