Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  SHOW PROCESSLIST Statement

15.7.7.30 显示进程列表语句

SHOW [FULL] PROCESSLIST
Important

INFORMATION_SCHEMA 实现的SHOW PROCESSLIST已弃用,可能在未来 MySQL 版本中被删除。建议使用 Performance Schema 实现的SHOW PROCESSLIST代替。

MySQL 进程列表显示当前正在执行的线程的操作。SHOW PROCESSLIST语句是进程信息的一种来源。关于该语句与其他来源的比较,请参阅进程信息来源

Note

基于 Performance Schema 的processlist表提供了SHOW PROCESSLIST的备用实现,该实现不同于默认的SHOW PROCESSLIST实现,不需要锁定和具有更好的性能特性。详细信息请参阅Section 29.12.22.7, “The processlist Table”

如果您拥有PROCESS特权,可以查看所有线程,包括其他用户的线程。否则(没有PROCESS特权),非匿名用户可以访问自己的线程信息,但不能访问其他用户的线程信息,匿名用户无法访问线程信息。

不使用FULL关键字,SHOW PROCESSLIST只显示每个语句的前 100 个字符在Info字段中。

SHOW PROCESSLIST语句非常有用,如果您收到“太多连接”错误消息,想要了解发生了什么。MySQL 保留一个额外的连接,以便账户拥有CONNECTION_ADMIN特权(或弃用的SUPER特权),以确保管理员总是可以连接并检查系统(假设您不将这个特权赋予所有用户)。

线程可以使用KILL语句杀死。详细信息请参阅Section 15.7.8.4, “KILL Statement”

示例SHOW PROCESSLIST输出:

mysql> SHOW FULL PROCESSLIST\G
*************************** 1. row ***************************
     Id: 1
   User: system user
   Host:
     db: NULL
Command: Connect
   Time: 1030455
  State: Waiting for source 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 replica
         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 replica; 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 replica; 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

    连接标识符。这与INFORMATION_SCHEMA PROCESSLIST 表中的ID列相同,同样与threads 表中的PROCESSLIST_ID列相同,并且由CONNECTION_ID() 函数在线程中返回。

  • User

    发出的语句的 MySQL 用户。值为 system user 表示服务器内部生成的非客户端线程,例如延迟行处理线程或 I/O (接收器) 或 SQL (应用程序) 线程用于副本主机。对于 system user,没有指定主机在 Host 列中。 unauthenticated user 表示线程已经与客户端连接关联,但客户端用户还没有进行身份验证。 event_scheduler 表示监控计划事件的线程(见第27.4节,“使用事件调度器”)。

    Note

    一个 User 值为 system userSYSTEM_USER 权限不同。前者标识内部线程。后者区分系统用户和常规用户帐户类别(见第8.2.11节,“帐户类别”)。

  • Host

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

  • db

    线程的默认数据库(或 NULL 如果没有选择)。

  • Command

    该线程正在为客户端执行的命令类型,或者如果会话处于空闲状态,则为Sleep。关于线程命令的描述,请参见第10.14节,“Examining Server Thread (Process) Information”。该列的值对应于客户端/服务器协议中的COM_xxx命令和Com_xxx状态变量。请参见第7.1.10节,“Server Status Variables”

  • Time

    该线程在当前状态中所用的秒数。对于复制SQL线程,值是从最后一个复制事件的时间戳到复制主机的实际时间的秒数。请参见第19.2.3节,“Replication Threads”

  • State

    一个动作、事件或状态,表明线程正在做什么。关于State值的描述,请参见第10.14节,“Examining Server Thread (Process) Information”

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

  • Info

    线程正在执行的语句,或者如果它正在执行无语句,则为NULL。语句可能是发送到服务器的语句,也可能是执行其他语句的最内层语句。例如,如果一个CALL语句执行一个存储过程,该存储过程正在执行一个SELECT语句,那么Info值将显示SELECT语句。