10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册节选

27.12.21.6线程表

线程表包含每个服务器线程的一行。每一行包含关于线程的信息,并指示是否为其启用监视和历史事件日志记录:

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_SCHEMAPROCESSLIST表中显示的Id列的显示PROCESSLIST,并由CONNECTION_ID ()线程内的函数。

    对于后台线程(与用户连接不关联),PROCESSLIST_ID,所以值不是唯一的。

  • PROCESSLIST_USER

    与前台线程关联的用户,用于后台线程。

  • PROCESSLIST_HOST

    与前台线程相关联的客户端的主机名,用于后台线程。

    不像宿主列的INFORMATION_SCHEMAPROCESSLIST表或宿主列的显示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_xxx状态变量。看到第5.1.10节,“服务器状态变量”

    后台线程不代表客户端执行命令,因此这一列可能是

  • 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没有被参考,因为后台线程没有关联的用户。

    • 对于任何线程,它历史值可以在线程的生命周期内更改。

    对于发生的线程的历史事件日志,以下条件必须为真:

  • 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_USERPROCESSLIST_HOST

  • 指数(PROCESSLIST_HOST

  • 指数(THREAD_OS_ID

  • 指数(RESOURCE_GROUP

截断表是不允许的线程表格