的线程
表包含每个服务器线程的一行。每一行包含关于线程的信息,并指示是否为其启用监视和历史事件日志记录:
SELECT * FROM performance_schema。线程\G *************************** 1. row *************************** THREAD_ID: 1 NAME: thread/sql/main TYPE: BACKGROUND PROCESSLIST_ID: NULL PROCESSLIST_USER: NULL PROCESSLIST_HOST: NULL PROCESSLIST_DB: NULL PROCESSLIST_COMMAND: NULL PROCESSLIST_TIME: 80284 PROCESSLIST_STATE: NULL PROCESSLIST_INFO: NULL PARENT_THREAD_ID: NULL ROLE: NULL INSTRUMENTED: YES HISTORY: YES CONNECTION_TYPE: NULL THREAD_OS_ID: 489803 RESOURCE_GROUP: SYS_default ... *************************** 4. row *************************** THREAD_ID: 51 NAME: thread/sql/one_connection TYPE: FOREGROUND PROCESSLIST_ID: 34 PROCESSLIST_USER: isabella PROCESSLIST_HOST: localhost PROCESSLIST_DB: performance_schema PROCESSLIST_COMMAND: Query PROCESSLIST_TIME: 0 PROCESSLIST_STATE: Sending data PROCESSLIST_INFO: SELECT * FROM performance_schema.threads PARENT_THREAD_ID: 1 ROLE: NULL INSTRUMENTED: YES HISTORY: YES CONNECTION_TYPE: SSL/TLS THREAD_OS_ID: 755399 RESOURCE_GROUP: USR_default ...
初始化性能模式时,它将填充线程
表中基于存在的线程。此后,每次服务器创建线程时都会添加一个新行。
的检测
而且历史
类的内容确定新线程的列值setup_actors
表格有关如何使用setup_actors
表来控制这些列,请参见第27.4.6节“线程预过滤”.
对象中的行删除线程
表在线程结束时发生。对于与客户端会话关联的线程,在会话结束时删除。如果客户端启用了自动重新连接,并且会话在断开连接后重新连接,则会话将与线程
表中有一个不同的PROCESSLIST_ID
价值。最初的检测
而且历史
新线程的值可能与原始线程的值不同setup_actors
表可能在此期间发生了更改,如果检测
或历史
值在行初始化后被更改,则更改不会转移到新线程。
您可以启用或禁用线程监视(即,线程执行的事件是否被检测)和历史事件日志记录。控制初始检测
而且历史
值的新前台线程,请使用setup_actors
表格要控制现有线程的这些方面,请设置检测
而且历史
列线程
表行。有关发生线程监视和历史事件日志记录的条件的详细信息,请参阅检测
而且历史
列。)
作为比较线程
名称前缀为的表列PROCESSLIST_
有关其他流程信息源的信息,请参见工艺信息来源.
的线程
表有这些列:
THREAD_ID
唯一的线程标识符。
的名字
与服务器中线程检测代码关联的名称。例如,
线程/ sql / one_connection
对应于代码中负责处理用户连接的线程函数和线程/ sql /主要
代表了main ()
服务器功能。类型
线程类型也是
前景
或背景
.用户连接线程是前台线程。与内部服务器活动关联的线程是后台线程。例子是内部InnoDB
线程,”binlog转储”向副本发送信息的线程、复制I/O和SQL线程。PROCESSLIST_ID
对于前台线程(与用户连接相关联),这是连接标识符。中显示的值相同
ID
列的INFORMATION_SCHEMA
PROCESSLIST
表中显示的Id
列的显示PROCESSLIST
,并由CONNECTION_ID ()
线程内的函数。对于后台线程(与用户连接不关联),
PROCESSLIST_ID
是零
,所以值不是唯一的。PROCESSLIST_USER
与前台线程关联的用户,
零
用于后台线程。PROCESSLIST_HOST
与前台线程相关联的客户端的主机名,
零
用于后台线程。不像
宿主
列的INFORMATION_SCHEMA
PROCESSLIST
表或宿主
列的显示PROCESSLIST
输出时,PROCESSLIST_HOST
列不包括TCP/IP连接的端口号。要从性能模式获取此信息,请启用套接字检测(默认情况下不启用)并检查socket_instances
表:mysql> SELECT NAME, ENABLED, TIMED FROM performance_schema。setup_instruments WHERE NAME LIKE 'wait/io/socket%';+----------------------------------------+---------+-------+ | 名字| |定时启用 | +----------------------------------------+---------+-------+ | 等待/ io /套筒/ sql / server_tcpip_socket |没有| | |等待/ io /套筒/ sql / server_unix_socket |没有| | |等待/ io /套筒/ sql / client_connection | |没有 | +----------------------------------------+---------+-------+ 3行集(0.01秒)performance_schema mysql >更新。setup_instruments SET ENABLED='YES' WHERE NAME LIKE 'wait/io/socket%';查询OK, 3 rows affected (0.00 sec) rows matched: 3 Changed: 3 Warnings: 0 mysql> SELECT * FROM performance_schema。socket_instances \ G *************************** 1。row *************************** EVENT_NAME: wait/io/socket/sql/client_connection OBJECT_INSTANCE_BEGIN: 140612577298432 THREAD_ID: 31 SOCKET_ID: 53 IP:::ffff:127.0.0.1 PORT: 55642 STATE: ACTIVE…
PROCESSLIST_DB
线程的默认数据库或
零
如果未选中。PROCESSLIST_COMMAND
对于前台线程,线程代表客户端执行的命令类型
睡眠
如果会话空闲。有关线程命令的描述,请参见第8.14节“检查服务器线程(进程)信息”.该列的值对应于COM_
客户端/服务器协议和xxx
Com_
状态变量。看到第5.1.10节,“服务器状态变量”xxx
后台线程不代表客户端执行命令,因此这一列可能是
零
.PROCESSLIST_TIME
线程处于当前状态的时间(以秒为单位)。对于复制SQL线程,该值是最后一个复制事件的时间戳与复制主机的真实时间之间的秒数。看到第17.2.3节“复制线程”.
PROCESSLIST_STATE
指示线程正在执行的操作、事件或状态。的描述
PROCESSLIST_STATE
值,请参阅第8.14节“检查服务器线程(进程)信息”.如果值为If零
,线程可能对应于一个空闲的客户端会话,或者它正在做的工作没有使用阶段。大多数状态对应于非常快速的操作。如果线程在给定状态停留数秒,则可能存在需要调查的问题。
PROCESSLIST_INFO
线程正在执行的语句,或者
零
如果它没有执行任何语句。该语句可以是发送到服务器的语句,也可以是执行其他语句的最内部语句。例如,如果a调用
语句执行正在执行类的存储过程选择
声明中PROCESSLIST_INFO
值显示选择
声明。PARENT_THREAD_ID
如果此线程是子线程(由另一个线程派生),则此线程为
THREAD_ID
生成线程的值。角色
未使用的。
检测
线程执行的事件是否被仪器化。这个值是
是的
或没有
.对于前景线程,初始
检测
值由与线程关联的用户帐户是否匹配setup_actors
表格的值进行匹配PROCESSLIST_USER
而且PROCESSLIST_HOST
列。如果线程生成子线程,则再次进行匹配
线程
为子线程创建的表行。后台线程,
检测
是是的
默认情况下。setup_actors
没有被参考,因为后台线程没有关联的用户。对于任何线程,它
检测
值可以在线程的生命周期内更改。
为了监视线程执行的事件发生,这些东西必须为真:
的
thread_instrumentation
消费者在setup_consumers
表必须是的
.的
线程。检测
列必须是的
.对象所产生的线程事件才会发生监视
启用
列设置为是的
在setup_instruments
表格
历史
是否记录线程的历史事件。这个值是
是的
或没有
.对于前景线程,初始
历史
值由与线程关联的用户帐户是否匹配setup_actors
表格的值进行匹配PROCESSLIST_USER
而且PROCESSLIST_HOST
列。如果线程生成子线程,则再次进行匹配
线程
为子线程创建的表行。后台线程,
历史
是是的
默认情况下。setup_actors
没有被参考,因为后台线程没有关联的用户。对于任何线程,它
历史
值可以在线程的生命周期内更改。
对于发生的线程的历史事件日志,以下条件必须为真:
中与历史相关的适当消费者
setup_consumers
表必须启用。的等待事件登录events_waits_history
而且events_waits_history_long
表需要相应的events_waits_history
而且events_waits_history_long
消费者要小心是的
.的
线程。历史
列必须是的
.对象所产生的线程事件才会发生日志记录
启用
列设置为是的
在setup_instruments
表格
CONNECTION_TYPE
用于建立连接的协议,或者
零
后台线程。允许的值TCP / IP
(没有加密的TCP/IP连接),SSL / TLS
(通过加密建立TCP/IP连接),套接字
(Unix套接字文件连接),命名管道
(Windows命名管道连接),和共享内存
(Windows共享内存连接)。THREAD_OS_ID
由底层操作系统定义的线程或任务标识符,如果有的话:
当一个MySQL线程在其生命周期内与同一个操作系统线程相关联时,
THREAD_OS_ID
包含操作系统线程ID。当MySQL线程在其生命周期内没有与同一个操作系统线程相关联时,
THREAD_OS_ID
包含零
.当使用线程池插件时,这是典型的用户会话第5.6.3节,“MySQL企业线程池”).
对于Windows,
THREAD_OS_ID
对应于进程资源管理器中可见的线程ID (https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx).对于Linux,
THREAD_OS_ID
的值gettid ()
函数。该值是公开的,例如,使用性能或ps - l命令,或在proc
文件系统(/proc/
).有关更多信息,请参见(pid)
/任务/(tid)
perf-stat (1)
,ps (1)
,proc (5)
手册页。RESOURCE_GROUP
资源组标签。这个值是
零
如果当前平台或服务器配置不支持资源组(请参阅资源组的限制).
的线程
表有以下索引:
主键(
THREAD_ID
)指数(
的名字
)指数(
PROCESSLIST_ID
)指数(
PROCESSLIST_USER
,PROCESSLIST_HOST
)指数(
PROCESSLIST_HOST
)指数(
THREAD_OS_ID
)指数(
RESOURCE_GROUP
)