PGXC_WAIT_DETAIL
PGXC_WAIT_DETAIL视图显示集群中所有节点SQL的详细等待链信息。该视图仅8.1.3.200及以上集群版本支持。
名称 | 类型 | 描述 |
|---|---|---|
level | integer | 等待链中的层级,以1开始,每显示一层等待关系level会加1。 |
lock_wait_hierarchy | text | 等待链,以节点名称:进程号->节点名称:等待进程号->节点名称:等待进程号->...。 |
node_name | text | 节点名称。 |
db_name | text | database名称。 |
thread_name | text | 线程名称。 |
query_id | bigint | 查询语句的id。 |
tid | bigint | 当前线程的线程号。 |
lwtid | integer | 当前线程的轻量级线程号。 |
ptid | integer | streaming线程的父线程。 |
tlevel | integer | streaming线程的层级。 |
smpid | integer | 并行线程的ID。 |
wait_status | text | 当前线程的等待状态。 |
wait_event | text | 持有此锁或者在等待此锁的事务的虚拟id。 |
exec_cn | boolean | 是否执行sql语句的cn节点。 |
wait_node | text | 锁级别。 |
query | text | 查询语句。 |
application_name | text | 连接到该后端的应用名。 |
backend_start | timestamp with time zone | 后端进程启动时间,即客户端连接服务器的时间。 |
xact_start | timestamp with time zone | 当前事务的启动时间。 |
query_start | timestamp with time zone | 开始当前活跃查询的时间。 |
waiting | boolean | 是否正处于等待状态。 |
state | text | 后端当前总体状态。 |
waittime | timestamp with time zone | 开始等待锁的时间戳。 该字段仅9.1.0.200及以上集群版本支持。 |
holdtime | timestamp with time zone | 开始获取锁的时间戳。 该字段仅9.1.0.200及以上集群版本支持。 |
应用实例
- 连接CN节点,开启一个事务,执行update操作:
1begin;update td set c2=6 where c1=1;
- 重开一个窗口连接CN节点,开启另一个事务,执行update操作(注意不要并发更新同一条记录):
1begin;update td set c2=6 where c1=7;
此时update操作会被阻塞。
- 再开一个窗口连接CN节点,创建一个索引:
1create index c2_key on td(c2);
- 执行select * from pgxc_wait_detail;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
SELECT * FROM PGXC_WAIT_DETAIL; level | lock_wait_hierarchy | node_name | db_name | thread_name | query_id | tid | lwtid | ptid | tlevel | sm pid | wait_status | wait_event | exec_cn | wait_node | query | application_name | backend_start | xact_st art | query_start | waiting | state -------+----------------------------------------------------+-----------+----------+-------------+-------------------+-----------------+--------+------+--------+--- ----+--------------+------------+---------+-----------+----------------------------------------+------------------+-------------------------------+----------------- --------------+-------------------------------+---------+-------- 1 | cn_5001:139870843444360 | cn_5001 | postgres | workload | 73183493945299462 | 139870843444360 | 578531 | | 0 | 0 | wait node | | t | | WLM fetch collect info from data nodes | workload | 2023-03-13 13:56:56.611486+08 | 2023-03-14 11:54 :33.562808+08 | 2023-03-13 13:57:00.262736+08 | t | active 1 | cn_5001:139870843654544 | cn_5001 | postgres | gsql | 73183493945299204 | 139870843654544 | 722259 | | 0 | 0 | wait node | | t | | update td set c2=6 where c1=1; | gsql | 2023-03-14 11:52:05.176588+08 | 2023-03-14 11:52 :19.054727+08 | 2023-03-14 11:53:58.114794+08 | t | active 1 | cn_5001:139870843655296 | cn_5001 | postgres | gsql | 73183493945299218 | 139870843655296 | 722301 | | 0 | 0 | wait node | | t | | update td set c2=6 where c1=7; | gsql | 2023-03-14 11:52:08.084265+08 | 2023-03-14 11:52 :42.978132+08 | 2023-03-14 11:53:59.459575+08 | t | active 1 | cn_5001:139870843656424 | cn_5001 | postgres | gsql | 73183493945299223 | 139870843656424 | 722344 | | 0 | 0 | acquire lock | relation | t | | create index c2_key on td(c2); | gsql | 2023-03-14 11:52:10.967028+08 | 2023-03-14 11:52 :53.463227+08 | 2023-03-14 11:54:00.25203+08 | t | active 2 | cn_5001:139870843656424 -> cn_5001:139870843655296 | cn_5001 | postgres | gsql | 73183493945299218 | 139870843655296 | 722344 | | | | | | f | | update td set c2=6 where c1=7; | gsql | 2023-03-14 11:52:08.084265+08 | 2023-03-14 11:52 :42.978132+08 | 2023-03-14 11:53:59.459575+08 | t | active (5 rows)

