Documentation Home

13.7.7.29 SHOW PROCESSLIST 语句

SHOW [FULL] PROCESSLIST

MySQL 进程列表指示当前由服务器内执行的一组线程执行的操作。该 SHOW PROCESSLIST声明是过程信息的来源之一。有关此声明与其他来源的比较,请参阅 流程信息来源

笔记

SHOW PROCESSLIST从 MySQL 8.0.22 开始,基于 Performance Schema 表 的替代实现 可用processlist,与默认SHOW PROCESSLIST 实现不同,它不需要互斥量并且具有更好的性能特征。有关详细信息,请参阅 第 27.12.21.6 节,“进程列表”

如果您有PROCESS 权限,您可以看到所有线程,甚至是属于其他用户的线程。否则(没有 PROCESS特权),非匿名用户可以访问关于他们自己的线程的信息,但不能访问其他用户的线程,而匿名用户则不能访问线程信息。

如果没有FULL关键字, 则仅显示字段 SHOW PROCESSLIST中每个语句的前 100 个字符 。Info

如果您收到“太多连接 错误消息并想了解发生了什么, 该SHOW PROCESSLIST语句将非常有用。MySQL 保留一个额外的连接供具有特权(或已弃用的 特权)的帐户使用,以确保管理员始终能够连接和检查系统(假设您没有将此特权授予所有用户)。 CONNECTION_ADMINSUPER

可以使用该 KILL语句终止线程。请参阅 第 13.7.8.4 节,“KILL 语句”

输出示例SHOW PROCESSLIST

mysql> SHOW FULL PROCESSLIST\G
*************************** 1. row ***************************
     Id: 1
   User: system user
   Host:
     db: NULL
Command: Connect
   Time: 1030455
  State: Waiting for master to send event
   Info: NULL
*************************** 2. row ***************************
     Id: 2
   User: system user
   Host:
     db: NULL
Command: Connect
   Time: 1004
  State: Has read all relay log; waiting for the slave
         I/O thread to update it
   Info: NULL
*************************** 3. row ***************************
     Id: 3112
   User: replikator
   Host: artemis:2204
     db: NULL
Command: Binlog Dump
   Time: 2144
  State: Has sent all binlog to slave; waiting for binlog to be updated
   Info: NULL
*************************** 4. row ***************************
     Id: 3113
   User: replikator
   Host: iconnect2:45781
     db: NULL
Command: Binlog Dump
   Time: 2086
  State: Has sent all binlog to slave; waiting for binlog to be updated
   Info: NULL
*************************** 5. row ***************************
     Id: 3123
   User: stefan
   Host: localhost
     db: apollon
Command: Query
   Time: 0
  State: NULL
   Info: SHOW FULL PROCESSLIST

SHOW PROCESSLIST输出有以下列:

  • Id

    连接标识符。ID这与表的列中 显示的值相同INFORMATION_SCHEMA PROCESSLIST,显示在PROCESSLIST_ID性能模式threads 表的列中,并由 CONNECTION_ID()线程内的函数返回。

  • User

    发出语句的 MySQL 用户。值是 system user指由服务器派生的非客户端线程来处理内部任务,例如,延迟行处理程序线程或副本主机上使用的 I/O(接收方)或 SQL(应用程序)线程。对于 system user,列中没有指定主机Hostunauthenticated user指的是已与客户端连接相关联但尚未对客户端用户进行身份验证的线程。event_scheduler指的是监视计划事件的线程(请参阅 第 25.4 节,“使用事件计划程序”)。

    笔记

    Usersystem userSYSTEM_USER特权不同。前者表示内螺纹。后者区分系统用户和普通用户帐户类别(请参阅第 6.2.11 节,“帐户类别”)。

  • Host

    发出语句的客户端的主机名(除了system user,它没有主机)。TCP/IP 连接的主机名以 格式报告,以便更容易确定哪个客户端正在做什么。 host_name:client_port

  • db

    线程的默认数据库,或者 NULL如果未选择任何数据库。

  • Command

    线程代表客户端执行的命令类型,或者Sleep会话是否空闲。有关线程命令的说明,请参阅 第 8.14 节,“检查服务器线程(进程)信息”。此列的值对应于 客户端/服务器协议和 状态变量的命令。请参阅第 5.1.10 节,“服务器状态变量”COM_xxxCom_xxx

  • Time

    线程处于其当前状态的时间(以秒为单位)。对于副本 SQL 线程,该值是最后一个复制事件的时间戳与副本主机的实际时间之间的秒数。请参阅 第 17.2.3 节,“复制线程”

  • State

    指示线程正在做什么的操作、事件或状态。有关State值的说明,请参阅第 8.14 节,“检查服务器线程(进程)信息”

    大多数状态对应于非常快速的操作。如果线程在给定状态下停留数秒,则可能存在需要调查的问题。

  • Info

    线程正在执行的语句,或者 NULL如果它没有执行任何语句。该语句可能是发送到服务器的语句,如果该语句执行其他语句,则可能是最里面的语句。例如,如果一个CALL 语句执行一个正在执行 SELECT语句的存储过程,则该 Info值显示该 SELECT语句。