# PGXC_LOCKWAIT_DETAIL
PGXC_LOCKWAIT_DETAIL视图显示集群中每个节点中锁等待链详细信息。如果节点中有多级的锁等待关系，会依次将整个锁等待链按照等待顺序显示出来。
该视图仅8.1.3.200及以上集群版本支持。
表1PGXC_LOCKWAIT_DETAIL字段 
| 名称                | 类型                          | 描述                                                                              |
|:---|:---|:---|
| 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                       | 后端当前总体状态。                                                                     |
| waittime          | timestamp with time zone   | 开始等待锁的时间戳。 该字段仅9.1.0.200及以上集群版本支持。 |
| holdtime           | timestamp with time zone | 开始获取锁的时间戳。 该字段仅9.1.0.200及以上集群版本支持。 |
   
#### 应用实例
1. 连接dn节点，开启一个事务，执行查询： 
   ```
   begin;select * from t1;
   ```
   
   
2. 另一个窗口连接cn，对表t1执行truncate： 
   ```
   truncate t1;
   ```
   此时truncate会被阻塞。
   
   
3. 另开一个窗口连接cn，执行select \* from pgxc_lockwait_detail; 
   ```
   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)
   ```
   
   
 
