该 tp_thread_state
表每行对应一个由线程池创建的线程来处理连接。
该 tp_thread_state
表具有以下列:
-
TP_GROUP_ID
线程组 ID。
-
TP_THREAD_NUMBER
线程组内的线程 ID。
TP_GROUP_ID
和TP_THREAD_NUMBER
共同提供了表中的唯一键。 -
PROCESS_COUNT
当前执行语句的 10ms 间隔。0 表示没有语句执行,1 表示在第一个 10ms 内,以此类推。
-
WAIT_TYPE
线程的等待类型。
NULL
表示线程未阻塞。否则,线程被thd_wait_begin()
阻塞,值指定等待类型。
列的xxx
_WAITtp_thread_group_stats
表累积每种等待类型的计数。该
WAIT_TYPE
值是一个字符串,描述等待类型,如下表所示。表 29.4 tp_thread_state 表 WAIT_TYPE 值
Wait Type Meaning THD_WAIT_SLEEP
等待睡眠 THD_WAIT_DISKIO
等待磁盘 IO THD_WAIT_ROW_LOCK
等待行锁 THD_WAIT_GLOBAL_LOCK
等待全局锁 THD_WAIT_META_DATA_LOCK
等待元数据锁 THD_WAIT_TABLE_LOCK
等待表锁 THD_WAIT_USER_LOCK
等待用户锁 THD_WAIT_BINLOG
等待二进制日志 THD_WAIT_GROUP_COMMIT
等待组提交 THD_WAIT_SYNC
等待 fsync -
TP_THREAD_TYPE
线程类型。该列的值是
CONNECTION_HANDLER_WORKER_THREAD
、LISTENER_WORKER_THREAD
、QUERY_WORKER_THREAD
或TIMER_WORKER_THREAD
之一。 -
THREAD_ID
该线程的唯一标识符。该值与 Performance Schema
threads
表的THREAD_ID
列相同。 -
TIME_OF_ATTACH
:该线程附加的时间戳,如果附加到连接;否则为
NULL
。 -
MARKED_STALLED
:如果该线程被STALL检查器线程标记为阻塞,则为
True
。 -
STATE
:可能的值取决于线程类型,如
TP_THREAD_TYPE
列所示:-
对于工作线程 (
QUERY_WORKER_THREAD
),该值是Managing
、Polling
、Processing Direct
、Processing Queued
、Sleeping Consumer
或Sleeping Reserve
之一。 -
对于连接处理线程 (
CONNECTION_HANDLER_WORKER_THREAD
),该值是CH Processing
、CH Sleeping Timed
或CH Sleeping Indefinite
之一。 -
对于STALL检查器线程 (
TIMER_WORKER_THREAD
),该值是SC Checking
、SC Sleeping Short
或SC Sleeping Long
之一。
-
-
EVENT_COUNT
:该线程处理的事件累积数。
-
ACCUMULATED_EVENT_TIME
:处理事件的墙钟时间。
-
EXEC_COUNT
:服务器执行的查询(语句)累积数量。
-
ACCUMULATED_EXEC_TIME
:服务器处理查询所花费的墙上时钟时间。
在 MySQL 8.3 中添加了 TIME_OF_ATTACH
、MARKED_STALLED
、STATE
、EVENT_COUNT
、ACCUMULATED_EVENT_TIME
、EXEC_COUNT
和 ACCUMULATED_EXEC_TIME
列。
表 tp_thread_state
有一个索引;这是 TP_GROUP_ID
和 TP_THREAD_NUMBER
列上的唯一索引。
TRUNCATE TABLE
不允许用于 tp_thread_state
表。