9.3 9.4 9.5 9.6 10 11 12 13 14 Current(15)
阿里云PostgreSQL 问题报告 纠错本页面
PostgreSQL 9.4.4 中文手册
上一页上一级附录 F. 额外提供的模块下一页

F.28. pgrowlocks

pgrowlocks模块提供一个显示指定的表的行锁定信息的函数。

F.28.1. 概述

pgrowlocks(text) returns setof record

该参数是一个表的名字。结果是一组记录,一行代表表中的一个锁定的行。 输出字段在表 F-19中显示。

表 F-19. pgrowlocks 输出字段

名字类型描述
locked_rowtid锁定的行的元组 ID (TID)
lockerxid锁定的事务 ID,或如果是多事务则为 multixact ID
multiboolean如果锁定的是多事务则为真
xidsxid[]锁定的事务 ID(如果有多个事务则为多个)
lock_typetext[]锁定的锁模式 (如果有多个事务则为多个), 一些 Key Share, Share, For No Key Update, No Key Update, For Update, Update
pidsinteger[]锁定后端的过程 ID (如果有多个事务则为多个)

pgrowlocksAccessShareLock作为目标表, 并且一行一行的读取行以采集行锁的信息。这对于大表来说不是非常快。请注意;

  1. 如果表作为一个整体是被他人排他锁的,那么pgrowlocks将被阻塞。

  2. pgrowlocks不保证生成一个自我一致的快照。 在执行期间,获得一个新的行锁或释放一个旧锁都是可能的。

pgrowlocks并不显示锁定的行的内容。 如果你希望同一时间查看行的内容,你可以像下面这样做:

SELECT * FROM accounts AS a, pgrowlocks('accounts') AS p
 WHERE p.locked_row = a.ctid;

不论如何都要小心这样一个查询将会是非常低效率的。

F.28.2. 示例输出

test=# SELECT * FROM pgrowlocks('t1');
 locked_row | lock_type | locker | multi | xids | pids
------------+-----------+--------+-------+-----------+---------------
 (0,1) | Shared | 19 | t | {804,805} | {29066,29068}
 (0,2) | Shared | 19 | t | {804,805} | {29066,29068}
 (0,3) | Exclusive | 804 | f | {804} | {29066}
 (0,4) | Exclusive | 804 | f | {804} | {29066}
(4 rows)

F.28.3. 作者

Tatsuo Ishii


上一页起始页下一页
pg_prewarm上一级pg_stat_statements
<
/BODY>

AltStyle によって変換されたページ (->オリジナル) /