PGXC_LOCKWAIT_DETAIL
PGXC_LOCKWAIT_DETAIL视图显示集群中每个节点中锁等待链详细信息。如果节点中有多级的锁等待关系,会依次将整个锁等待链按照等待顺序显示出来。
该视图仅8.1.3.200及以上集群版本支持。
名称 |
类型 |
描述 |
---|---|---|
level |
integer |
锁等待链中的层级,以1开始,每显示一层等待关系level会加1。 |
node_name |
name |
节点名称,对应pgxc_node表中的node_name列。 |
lock_wait_hierarchy |
text |
锁等待链,以节点名称:进程号->等待进程号->等待进程号->...。 |
lock_type |
text |
被锁定对象的类型。 |
database |
oid |
被锁定对象所在数据库的OID。 |
relation |
oid |
被锁定对象关系的OID。 |
page |
integer |
关系内部的页面编号。 |
tuple |
smallint |
页面的行编号。 |
virtual_xid |
text |
事务的虚拟ID。 |
transaction_id |
xid |
事务ID。 |
class_id |
oid |
包含该对象的系统表的OID。 |
obj_id |
oid |
对象在其系统表内的OID。 |
obj_subid |
smallint |
对于表的列字段编号。 |
virtual_transaction |
text |
持有此锁或者在等待此锁的事务的虚拟ID。 |
pid |
bigint |
持有此锁或者等待此锁的线程号。 |
mode |
text |
锁级别。 |
granted |
boolean |
是否持有锁。 |
fastpath |
boolean |
是否通过fastpath机制获得锁。 |
wait_for_pid |
bigint |
锁冲突线程的线程号。 |
conflict_mode |
text |
锁冲突线程持有的冲突锁级别。 |
query_id |
bigint |
查询语句的id。 |
query |
text |
查询语句。 |
application_name |
text |
连接到该后端的应用名。 |
backend_start |
timestamp with time zone |
后端进程启动时间,即客户端连接服务器的时间。 |
xact_start |
timestamp with time zone |
当前事务的启动时间。 |
query_start |
timestamp with time zone |
开始当前活跃查询的时间。 |
state |
text |
后端当前总体状态。 |
应用实例
- 连接dn节点,开启一个事务,执行查询:
1
begin;select * from t1;
- 另一个窗口连接cn,对表t1执行truncate:
1
truncate t1;
此时truncate会被阻塞。
- 另开一个窗口连接cn,执行select * from pgxc_lockwait_detail;
1 2 3 4 5 6 7 8 9 10 11 12 13 14
SELECT * FROM PGXC_LOCKWAIT_DETAIL; level | node_name | lock_wait_hierarchy | lock_type | database | relation | page | tuple | virtual_xid | transaction_id | class_id | obj_id | obj_subid | virtual_transaction | p id | mode | granted | fastpath | wait_for_pid | conflict_mode | query_id | query | application_name | backend_start | xact_start | query_start | state -------+-----------+----------------------------------------------+-----------+----------+------------+------+-------+-------------+----------------+----------+--------+-----------+---------------------+-------- ---------+---------------------+---------+----------+-----------------+-----------------+-------------------+------------------------------------------------+------------------+-------------------------------+-- -----------------------------+-------------------------------+--------------------- 1 | datanode1 | datanode1:140378619314976 | relation | 16049 | 2147484411 | | | | 673638 | | | | 19/297 | 1403786 19314976 | AccessExclusiveLock | f | f | 140378619263840 | AccessShareLock | 73183493945504391 | TRUNCATE t1 | coordinator1 | 2023-03-13 12:13:52.530602+08 | 2 023-03-13 14:52:16.1456+08 | 2023-03-13 14:52:16.148693+08 | active 2 | datanode1 | datanode1:140378619314976 -> 140378619263840 | relation | 16049 | 2147484411 | | | | | | | | 23/16067 | 1403786 19263840 | AccessShareLock | t | f | | | 0 | begin;select * from t1; | gsql | 2023-03-13 14:19:26.325602+08 | 2 023-03-13 14:52:12.042741+08 | 2023-03-13 14:52:12.042741+08 | idle in transaction (2 rows)