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的空间。
主要锁类型
- Spinlocks:自旋锁,其保护的对象一般是数据库内部的一些数据结构,是一种轻量级的锁
- LWLocks:轻量锁,也是主要用于保护数据库内部的一些数据结构,支持独占和共享两种模式
- SIReadLock predicate locks:谓词锁,主要是用来表示数据库对象和事务间的一个特定关系
- Regular locks:又叫heavy weight locks,也就是常说的表锁,行锁等这些
fathpath参考文档:https://blog.csdn.net/weixin_46199817/article/details/119210820