pg_locks

pg_locks

pg_locks视图提供了有关在Greenplum数据库中由打开的事务持有的锁的信息的访问。

pg_locks包含一行关于每个积极可锁对象,请求的锁模式和相关事务。 因此,如果多个事务正在持有或等待其上的锁,同样的可锁对象可能会出现多次。 但是,目前没有锁的对象根本就不会出现。

存在几种不同类型的可锁定对象:完整关系(例如表),关系的各个页面,关系的单个元组,事务ID(虚拟和永久ID)以及通用数据库对象。 此外,扩展关系的权利表示为单独的可锁定对象。

Table 1. pg_catalog.pg_locks
类型 参考 描述
locktype text   可锁对象的类型:relation, extend, page, tuple, transactionid, object, userlock, resource queueadvisory
database oid pg_database.oid 该对象存在的数据库的Oid,如果该对象是共享对象,则为0。 如果对象是事务ID,则为空。
relation oid pg_class.oid 关系的OID,如果对象不是关系或者关系的一部分,则为NULL。
page integer   关系中的页码,如果对象不是元组或者关系页则为NULL
tuple smallint   页中的元组号,如果该对象不是个元组则为NULL
virtualxid text   事务的虚拟ID,如果对象不是虚拟事务ID,则为NULL
transactionid xid   事务的ID,如果该对象不是一个事务ID,则为NULL
classid oid pg_class.oid 包含对象的系统目录的OID,如果对象不是一般数据库对象,则为NULL
objid oid any OID column 其系统目录中对象的OID,如果对象不是一般数据库对象,则为NULL
objsubid smallint   对一个表列来说,这是列号( classid和objid引用表本身)。 对于所有其他的对象类型,此列为0。 如果对象不是数据库对象,则为NULL
virtualtransaction text   持有或等待此锁定的事务的虚拟ID
pid integer   持有或等待该锁的事务进程的进程Id。 如果锁定由准备好的事务持有,则为NULL
mode text   该进程所持有或期望的锁模式的名称
granted boolean   锁被持有为真,锁为等待为假
fastpath boolean   如果通过快速路径进行锁定则为True,如果通过主锁定表进行锁定则为false。
mppsessionid integer   与锁相关的客户端会话的id。
mppiswriter boolean   指明该锁是否由一个写进程所持有。
gp_segment_id integer   Greenplum持有该锁的segment的id(dbid)。