更新时间:2024-06-03 GMT+08:00

PG_LOCKS

PG_LOCKS视图显示各打开事务所持有的锁的信息。

表1 PG_LOCKS字段

名称

类型

引用

描述

locktype

text

-

被锁定对象的类型:relation、extend,page、tuple、transactionid、virtualxid、object、userlock、advisory。

database

oid

PG_DATABASE.oid

被锁定对象所在数据库的OID。

  • 如果被锁定的对象是共享对象,则OID为0。
  • 如果被锁定的对象是一个事务,则OID为NULL。

relation

oid

PG_CLASS.oid

关系的OID,如果锁定的对象不是关系,也不是关系的一部分,则为NULL。

page

integer

-

关系内部的页面编号,如果对象不是关系页或者不是行页,则为NULL。

tuple

smallint

-

页面里边的行编号,如果对象不是行,则为NULL。

bucket

integer

-

子表对应的bucket number。如果目标不是表的话,则为NULL。

virtualxid

text

-

虚拟事务的ID,如果对象不是一个虚拟事务,则为NULL。

transactionid

xid

-

事务的ID,如果对象不是一个事务,则为NULL。

classid

oid

PG_CLASS.oid

包含该对象的系统表的OID,如果对象不是普通的数据库对象,则为NULL。

objid

oid

-

对象在其系统表内的OID,如果对象不是普通的数据库对象,则为NULL。

objsubid

smallint

-

对于表的一个字段,这是字段编号;对于其他对象类型,这个字段是0;如果这个对象不是普通数据库对象,则为NULL。

virtualtransaction

text

-

持有此锁或者在等待此锁的虚拟事务的ID。

pid

bigint

-

持有或者等待这个锁的服务器逻辑线程的ID。如果锁是被一个预备事务持有的,则为NULL。

sessionid

bigint

-

持有或者等待这个锁的会话的ID。

mode

text

-

这个线程持有的或者是期望的锁模式。

可能取值为:AccessShareLock、RowShareLock、RowExclusiveLock、ShareLock、ShareRowExclusiveLock、ExclusiveLock、AccessExclusiveLock。

granted

boolean

-

  • 如果锁是持有锁,则为TRUE。
  • 如果锁是等待锁,则为FALSE。

fastpath

boolean

-

如果通过fast-path获得锁,则为TRUE;如果通过主要的锁表获得,则为FALSE。

locktag

text

-

会话等待锁信息,可通过locktag_decode()函数解析。

global_sessionid

text

-

全局会话ID。