pg_locks视图

pg_locks视图字段属性信息

字段 类型 描述
locktype text 锁定对象的类型
database oid 对象所在的数据的oid
relation oid 关系的oid,如果对象不是关系,也不是关系的一部分,则为null
page integer 关系内部的页面编号,如果对象不是元组页不是关系页,则为null
tuple smallint 页面里面的元组编号
virtual xid 虚拟事务id,表示这个锁对象是一个虚拟事务
transactionid xid 事务的ID
classid oid 包含该对象的系统表的oid
objid oid 对象在其系统表内的oid
objsubid smallint 对于表的一个字段,这是字段编号;对于其他对象类型,这个字段是0;如果这个找对象不是普通数据对象,则为null
virtaultransaction xid 持有或等待这把锁的虚拟事务id
pid integer 持有或者等待这个锁的服务器进程的进程ID
mode text 这个进程持有的或者是期望的锁模式
granted boolean 如果持有锁,为真,等待锁则为假
fastpath fastpath锁

虚拟事务

每产生一个事务id,都会在commit log文件中占用2bit。但有些事务没有产生任何实质的变更,比如只读事务或空事务,给它们也分配一个事务ID就很消费。因此,对这类没有实质变更的事务,只分配虚拟事务ID,不分配事务ID,不占用2bit的空间。

主要锁类型

  1. Spinlocks:自旋锁,其保护的对象一般是数据库内部的一些数据结构,是一种轻量级的锁
  2. LWLocks:轻量锁,也是主要用于保护数据库内部的一些数据结构,支持独占和共享两种模式
  3. SIReadLock predicate locks:谓词锁,主要是用来表示数据库对象和事务间的一个特定关系
  4. Regular locks:又叫heavy weight locks,也就是常说的表锁,行锁等这些

fathpath参考文档:https://blog.csdn.net/weixin_46199817/article/details/119210820

猜你喜欢

转载自blog.csdn.net/weixin_44375561/article/details/121141386