视图pg_locks提供了数据库服务器上活动进程中保持的锁的信息。
pg_locks中对每一个活动可锁对象、请求锁模式和相关进程的组合都有一行。因此,如果多个进程持有或者正在等待一个可锁对象上的锁,同一个可锁对象可能出现很多次。但是,一个当前没有被锁的对象根本不会出现。
有多种不同类型的可锁对象:整个关系(如表)、关系的单个页、关系的单个元组、事务ID(包括虚拟和永久ID)和普通数据库对象(由类OID和对象OID标识,和pg_description或pg_depend中的相同方式)。扩展一个关系的权力也被表示为一个独立的可锁对象,就像更新pg_database.datfrozenxid的权力。“advisory”锁可以具有用户定义的意义。
下面对locktype进行总结并说明了如何获取类型锁的方式。
src/include/storage/lock.h
/*
* LOCKTAG is the key information needed to look up a LOCK item in the
* lock hashtable. A LOCKTAG value uniquely identifies a lockable object.
*
* The LockTagType enum defines the different kinds of objects we can lock.
* We can handle up to 256 different LockTagTypes.
*/
typedef enum LockTagType
{
LOCKTAG_RELATION,/* whole relation */
LOCKTAG_RELATION_EXTEND,/* the right to extend a relation */
LOCKTAG_DATABASE_FROZEN_IDS,/* pg_database.datfrozenxid */
LOCKTAG_PAGE,/* one page of a relation */
LOCKTAG_TUPLE,/* one physical tuple */
LOCKTAG_TRANSACTION,/* transaction (for waiting for xact done) */
LOCKTAG_VIRTUALTRANSACTION, /* virtual transaction (ditto) */
LOCKTAG_SPECULATIVE_TOKEN,/* speculative insertion Xid and token */
LOCKTAG_OBJECT,/* non-relation database object */
LOCKTAG_USERLOCK,/* reserved for old contrib/userlock code */
LOCKTAG_ADVISORY/* advisory user locks */
} LockTagType;
复制
文章转载自PostgreSQL数据库工作学习随笔,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
2025年4月中国数据库流行度排行榜:OB高分复登顶,崖山稳驭撼十强
墨天轮编辑部
1901次阅读
2025-04-09 15:33:27
【DBA坦白局】第一期:在小城市和一线城市做DBA,是“躺”还是“卷”?
墨天轮编辑部
1316次阅读
2025-04-10 14:17:22
Oracle Concepts(Oracle 19c):07 SQL
Ryan Bai
1012次阅读
2025-04-09 10:57:11
2025年3月国产数据库大事记
墨天轮编辑部
874次阅读
2025-04-03 15:21:16
2025 DBA 薪资观察:做 DBA 还香吗?
墨天轮编辑部
642次阅读
2025-04-24 15:53:21
Oracle DBA 高效运维指南:高频实用 SQL 大全
Lucifer三思而后行
634次阅读
2025-03-28 21:52:03
2025年3月国产数据库中标情况一览:TDSQL大单622万、GaussDB大单581万……
通讯员
607次阅读
2025-04-10 15:35:48
月薪快6万的DBA,有命干不一定有命花
多明戈教你玩狼人杀
561次阅读
2025-04-18 10:36:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
555次阅读
2025-04-15 17:24:06
如何利用Deepseek自动优化SQL并推送
潇湘秦
515次阅读
2025-03-28 10:02:33