PostgreSQL行锁定

概述

pgrowlocks函数来显示指定表的行锁定信息。通常仅限于超级用户使用

使用pgrowlocks模块前,首先需要执行CREATE EXTENSION命令:

引入

CREATE EXTENSION pgrowlocks; CREATE EXTENSION select * from pgrowlocks('test'); locked_row | locker | multi | xids | modes | pids ------------+--------+-------+------+-------+------ (0 rows)

参数是一个表名。结果是一个记录集合,其中每一行对应表中一个被锁定的行。输出列如下表

pgrowlocks输出列说明

名称 类型 描述
locked_row tid 被锁定行的元组ID(TID)
locker xid 持锁者的事务ID,如果是多事务则为多事务ID。
multi boolean 如果持锁者是一个多事务,则为真。
xids xid[] 持锁者的事务ID(如果是多事务则多于一个)。
lock_type text[] 持锁者的锁模式(如果是多事务则多于一个),是一个Key Share、Share、For No Key Update、No Key Update、For |Update、Update组成的数组。
pids integer[] 锁定后端的进程ID(如果是多事务则多于一个)

pg_stat_scan_tables角色的成员和在该表上拥有SELECT权限的用户。

pgrowlocks会为目标表加AccessShareLock并读取每一行来收集行的锁定信息,对于大表来说速度较慢。

pgrowlocks不显示被锁定行的内容。

查看被锁定行的内容,例如:

SELECT * FROM test AS a, pgrowlocks('test') AS p WHERE p.locked_row = a.ctid; id | testid | personid | imgurl | rectime | locked_row | locker | multi | xids | modes | pids ----+--------+----------+--------+---------+------------+--------+-------+------+-------+------ (0 rows)

免责声明:

1、本站资源由自动抓取工具收集整理于网络。

2、本站不承担由于内容的合法性及真实性所引起的一切争议和法律责任。

3、电子书、小说等仅供网友预览使用,书籍版权归作者或出版社所有。

4、如作者、出版社认为资源涉及侵权,请联系本站,本站将在收到通知书后尽快删除您认为侵权的作品。

5、如果您喜欢本资源,请您支持作者,购买正版内容。

6、资源失效,请下方留言,欢迎分享资源链接

文章评论

0条评论