pg_locks

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

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

有几种不同类型的可锁对象:整个关系(如表),关系的个别页,关系的个别元组,事务Id和通用数据库对象。另外,扩展关系的权利表示为单独的可锁对象。

表 1. pg_catalog.pg_locks
类型参考描述
locktypetext 可锁对象的类型:relation, extend, page, tuple, transactionid, object, userlock, resource queue, 或 advisory
databaseoidpg_database.oid该对象存在的数据库的Oid, 如果该对象是共享对象,则为0。如果对象是事务ID,则为空。
relationoidpg_class.oid关系的Oid,如果对象不是关系或者关系的一部分,则为NULL。
pageinteger 关系中的页码,如果对象不是元组或者关系页则为NULL
tuplesmallint 页中的元组号,如果该对象不是个元组则为NULL。
transactionidxid 事务的Id,如果该对象不是一个事务Id,则为NULL。
classidoidpg_class.oid包含对象的系统目录的Oid,如果对象不是一般数据库对象,则为NULL。
objidoidany OID column其系统目录中对象的Oid,如果对象不是一般数据库对象,则为NULL。
objsubidsmallint 对一个表列来说, 这是列号( classid和objid引用表本身)。 对于所有其他的对象类型,此列为0。如果对象不是数据库对象,则为NULL。
transactionxid 等待或持有该锁的事务的Id。
pidinteger 持有或等待该锁的事务进程的进程Id,如果锁由准备(prepared)的事务持有,则为NULL。
modetext 该进程所持有或期望的锁模式的名称。
grantedboolean 锁被持有为真,锁为等待为假。
mppsessionidinteger 与锁相关的客户端会话的id。
mppiswriterboolean 指明该锁是否由一个写进程所持有。
gp_segment_idinteger 该 Greenplum 持有该锁的段的id(dbid

上级话题: 系统目录定义