pgrowlocks

显示行级锁信息

概览

扩展包名版本分类许可证语言
pgrowlocks1.2STATPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
6910pgrowlocks-
相关扩展pg_profile pg_tracing pg_show_plans pg_stat_kcache pg_stat_monitor pg_qualstats pg_store_plans pg_track_settings

版本

PG18PG17PG16PG15PG14
1.21.21.21.21.2

安装

提示:这是 PostgreSQL 内核自带的 contrib 扩展

CREATE EXTENSION pgrowlocks;

用法

pgrowlocks: 显示行级锁信息

pgrowlocks 显示表中哪些行当前被锁定、被哪些事务锁定以及锁模式。

函数

SELECT * FROM pgrowlocks('my_table');

 locked_row | locker | multi | xids  |     modes      |  pids
------------+--------+-------+-------+----------------+--------
 (0,1)      |    609 | f     | {609} | {"For Share"}  | {3161}
 (0,2)      |    609 | f     | {609} | {"For Share"}  | {3161}
 (0,3)      |    607 | f     | {607} | {"For Update"} | {3107}

返回列

列名类型描述
locked_rowtid被锁定行的元组 ID
lockerxid事务 ID(或多事务 ID)
multiboolean如果 locker 是多事务则为 true
xidsxid[]所有锁持有者的事务 ID
modestext[]锁模式:For Key ShareFor ShareFor No Key UpdateFor Update
pidsinteger[]锁持有后端的进程 ID

查看被锁定行的内容

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

访问权限

限制为超级用户、拥有 pg_stat_scan_tables 角色的成员以及对目标表有 SELECT 权限的用户。

注意事项

  • 对目标表获取 AccessShareLock
  • 不保证产生自洽的快照
  • 对大表可能较慢

最后修改 2026-03-12: update extension pages (f579993)