pg_locks
pg_locks
pg_locks视图提供了有关在Greenplum数据库中由打开的事务持有的锁的信息的访问。
pg_locks包含一行关于每个积极可锁对象,请求的锁模式和相关事务。 因此,如果多个事务正在持有或等待其上的锁,同样的可锁对象可能会出现多次。 但是,目前没有锁的对象根本就不会出现。
存在几种不同类型的可锁定对象:完整关系(例如表),关系的各个页面,关系的单个元组,事务ID(虚拟和永久ID)以及通用数据库对象。 此外,扩展关系的权利表示为单独的可锁定对象。
列 | 类型 | 参考 | 描述 |
---|---|---|---|
locktype | text | 可锁对象的类型:relation, extend, page, tuple, transactionid, object, userlock, resource queue或 advisory | |
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)。 |