Updated on 2023-10-23 GMT+08:00

GLOBAL_THREAD_WAIT_STATUS

GLOBAL_THREAD_WAIT_STATUS allows you to test the block waiting status of backend threads and auxiliary threads on all nodes. For details about the events, see Table 2.

In GLOBAL_THREAD_WAIT_STATUS, you can see all the call hierarchy relationships between threads of the SQL statements on all nodes in the cluster, and the block waiting status for each thread. With this view, you can easily locate the causes of process hang and similar issues.

The definitions of GLOBAL_THREAD_WAIT_STATUS and THREAD_WAIT_STATUS are the same, because the essence of the GLOBAL_THREAD_WAIT_STATUS view is the query summary of the THREAD_WAIT_STATUS view on each node in the cluster.

Table 1 GLOBAL_THREAD_WAIT_STATUS columns

Name

Type

Description

node_name

text

Current node name

db_name

text

Database name

thread_name

text

Thread name

query_id

bigint

Query ID. The value of this column is the same as that of debug_query_id.

tid

bigint

Thread ID of the current thread

sessionid

bigint

Session ID

lwtid

integer

Lightweight thread ID of the current thread

psessionid

bigint

Parent thread of the streaming thread

tlevel

integer

Level of the streaming thread

smpid

integer

Concurrent thread ID

wait_status

text

Waiting status of the current thread. For details about the waiting status, see Table 2.

wait_event

text

If wait_status is acquire lock, acquire lwlock, or wait io, this column describes the lock, lightweight lock, and I/O information, respectively. If wait_status is not any of the three values, this column is empty.

locktag

text

Information about the lock that the current thread is waiting for

lockmode

text

Lock mode that the current thread is waiting to obtain. The values include table-level lock, row-level lock, and page-level lock modes.

block_sessionid

bigint

ID of the session that blocks the current thread from obtaining the lock

global_sessionid

text

Global session ID