文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  SHOW PROCESSLIST 语句

15.7.7.30 SHOW PROCESSLIST 语句

SHOW [FULL] PROCESSLIST
重要

INFORMATION SCHEMA 实现的 SHOW PROCESSLIST 已被弃用,并将在未来的 MySQL 版本中移除。建议使用 Performance Schema 实现的 SHOW PROCESSLIST 来代替。

MySQL 进程列表指示当前由在服务器中执行的一组线程执行的操作。 SHOW PROCESSLIST 语句是进程信息的一个来源。有关此语句与其他来源的比较,请参见 进程信息的来源.

注意

基于 Performance Schema 的 SHOW PROCESSLIST 的替代实现可用,该实现基于 Performance Schema processlist 表,与默认的 SHOW PROCESSLIST 实现不同,它不需要互斥锁,并且具有更好的性能特征。有关详细信息,请参见 第 29.12.22.7 节,“processlist 表”.

如果您拥有PROCESS 权限,则可以查看所有线程,即使是属于其他用户的线程。否则(没有PROCESS 权限),非匿名用户可以访问有关其自身线程的信息,但不能访问其他用户的线程信息,而匿名用户则无法访问线程信息。

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

如果您遇到连接过多错误消息并想知道发生了什么,则SHOW PROCESSLIST 语句非常有用。MySQL 预留了一个额外的连接供拥有CONNECTION_ADMIN 权限(或已弃用的SUPER 权限)的帐户使用,以确保管理员始终能够连接并检查系统(假设您没有将此权限授予所有用户)。

可以使用KILL 语句杀死线程。请参阅第 15.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 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 列中显示的值相同,在 Performance Schema threads 表的PROCESSLIST_ID 列中显示,并由线程内的CONNECTION_ID() 函数返回。

  • User

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

    注意

    值为system userUserSYSTEM_USER 权限不同。前者表示内部线程。后者区分系统用户和常规用户帐户类别(请参阅第 8.2.11 节,“帐户类别”)。

  • Host

    发出语句的客户端主机名(system user 除外,因为它没有主机)。TCP/IP 连接的主机名以host_name:client_port 格式报告,以便更轻松地确定哪个客户端正在执行什么操作。

  • db

    线程的默认数据库,如果未选择任何数据库,则为NULL

  • Command

    线程代表客户端执行的命令类型,如果会话处于空闲状态,则为Sleep。有关线程命令的说明,请参阅第 10.14 节,“检查服务器线程(进程)信息”。此列的值对应于客户端/服务器协议的COM_xxx 命令和Com_xxx 状态变量。请参阅第 7.1.10 节,“服务器状态变量”

  • Time

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

  • State

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

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

  • Info

    线程正在执行的语句,如果它没有执行任何语句,则为NULL。语句可能是发送到服务器的语句,也可能是内部语句,如果语句执行其他语句。例如,如果CALL 语句执行执行SELECT 语句的存储过程,则Info 值将显示SELECT 语句。