Mysql 简明教程
MySQL - Show Processlist
MySQL 数据库提供了一个多用户环境,允许多个客户端同时访问数据库。一个进程被定义为一个用户在 MySQL 服务器上执行的操作。多个用户可以同时在 MySQL 服务器上同时运行多个进程。
What is MySQL Process List?
MySQL process list 被定义为当前由在服务器内执行的用户线程集执行的操作列表。
如果用户拥有 PROCESS 特权,他们可以看到服务器上的所有线程,包括其他用户的线程。但是,如果一个用户没有这样的特权,则非匿名用户只能访问有关他们自己的线程的信息;而匿名用户不能访问线程信息。
要检索有关在 MySQL 服务器上运行的这些进程的信息,我们可以使用 SHOW PROCESSLIST 命令。
The MySQL SHOW PROCESSLIST Command
MySQL SHOW PROCESSLIST 命令用于显示有关在 MySQL 服务器上运行的当前进程的信息。
这个语句在处理“太多连接”错误时特别有用,因为它提供了有关这些连接及其操作的详细信息。此外,MySQL 为具有 CONNECTION_ADMIN 特权(或旧版本中的 SUPER 特权)的管理员保留了一个额外的连接,以确保他们始终可以访问系统。
Syntax
以下是 SHOW PROCESSLIST 命令的语法 −
SHOW [FULL] PROCESSLIST
这里,FULL 关键字是可选的。但是,如果您省略 FULL 关键字,SHOW PROCESSLIST 仅显示信息字段中每个语句的前 100 个字符。
Output
以下是所获得的输出 −
*************************** 1. row ***************************
Id: 5
User: event_scheduler
Host: localhost
db: NULL
Command: Daemon
Time: 1065209
State: Waiting on empty queue
Info: NULL
*************************** 2. row ***************************
Id: 56
User: root
Host: localhost:51995
db: customers
Command: Query
Time: 0
State: init
Info: SHOW PROCESSLIST
2 rows in set (0.00 sec)
Output
获得的输出如下所示 −
*************************** 1. row ***************************
Id: 5
User: event_scheduler
Host: localhost
db: NULL
Command: Daemon
Time: 1065138
State: Waiting on empty queue
Info: NULL
*************************** 2. row ***************************
Id: 56
User: root
Host: localhost:51995
db: customers
Command: Query
Time: 0
State: init
Info: SHOW FULL PROCESSLIST
2 rows in set (0.00 sec)
Output Explanation
从 SHOW PROCESSLIST 命令获得的输出结果集具有以下列 −
-
Id − 它是连接的身份。
-
User − 这保存了发出该语句的 MySQL 用户的名称。
-
Host − 发出该语句的客户端的主机名(系统用户除外,因为它没有主机)。TCP/IP 连接的主机名以“host_name:client_port”格式表示,以便更容易确定客户端的操作。
-
db − 这是该线程的默认数据库,如果没有选择,则为 NULL。
-
Command − 显示了相应线程代表客户端执行的命令类型,或者如果会话处于空闲状态,则显示 Sleep。
-
Time − 线程在当前状态下所花费的时间(以秒为单位)。
-
State − 表示线程正在做什么的一个动作、事件或状态。大多数状态对应于非常快速的操作。如果一个线程在给定状态下停留很多秒,则可能存在需要调查的问题。
-
Info − 执行中的线程语句。如果线程中没有任何语句在执行,则显示 NULL。