show [full] processlist
show processlist显示正在运行的线程。如果有process权限,则可以查看所有正在运行的线程。否则,只能看到自己的线程。如果不使用full关键字,则只在info字段显示每个语句的前100个字符。
show processlist命令是非常有用的,如果你获得到“too many connections”错误信息,并且想知道什么正在运行。MySQL保留了一个额外的连接给超级管理员。
线程能够被kill掉,使用kill语句。
mysql> show processlist; +----+------+--------------------+-----------+---------+------+-------------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+--------------------+-----------+---------+------+-------------+------------------+ | 36 | root | 172.16.100.19:7954 | tpcc_test | Sleep | 456 | | NULL | | 37 | root | 172.16.100.19:7969 | tpcc_test | Sleep | 456 | | NULL | | 42 | root | localhost | NULL | Query | 0 | System lock | show processlist | | 43 | root | 10.0.102.204:49224 | employees | Sleep | 12 | | NULL | +----+------+--------------------+-----------+---------+------+-------------+------------------+ 4 rows in set (0.00 sec)
这个显示的几个字段还是比较好理解的。
- ID:连接标识。这个值和INFORMATION_SCHEMA.PROCESSLIST表的ID列,以及PERFORMANCE_SCHEMA中的threads中的process_id值是相同的。
- user: 发出该语句的MySQL用户。system user是指由服务器生成的用于内部处理任务的非客户端线程。这可以是用于复制的I/O线程,或SQL线程,也可以是延迟的行处理程序。未经身份验证的用户是指已经与客户端连接但尚未对客户端身份进行验证的线程。
- Host:客户端使用的主机。系统用户没有host值。
- db:连接的数据库。
- command:线程执行的命令
command的取值
A thread can have any of the following Command values: Binlog Dump: This is a thread on a master server for sending binary log contents to a slave server. Change user: The thread is executing a change-user operation. Close stmt: The thread is closing a prepared statement.[关闭准备好的声明] Connect:A replication slave is connected to its master. 【已经连接】 Connect Out:A replication slave is connecting to its master. 【正则连接】 Create DB:The thread is executing a create-database operation. Daemon:This thread is internal to the server, not a thread that services a client connection. 【这个线程是服务器内部线程,而不是客户端线程】 Debug:The thread is generating debugging information. 【线程正在生成调试信息】 Delayed insert:The thread is a delayed-insert handler.【延迟插入处理】 Drop DB:The thread is executing a drop-database operation. Error: Execute:The thread is executing a prepared statement. 【线程正在执行预准备的语句】 Fetch:The thread is fetching the results from executing a prepared statement.【线程正在从预准备语句拉取结果】 Field List:The thread is retrieving information for table columns.【该线程正则检索列表信息】 Init DB:The thread is selecting a default database. 【线程正在选择一个默认数据库】 Kill:The thread is killing another thread. 【线程正则kill掉其他线程】 Long Data:The thread is retrieving long data in the result of executing a prepared statement. Ping:The thread is handling a server-ping request. Prepare:The thread is preparing a prepared statement. Processlist:The thread is producing information about server threads. Query: The thread is executing a statement. Quit:The thread is terminating. Refresh:The thread is flushing table, logs, or caches, or resetting status variable or replication server information. Register Slave: The thread is registering a slave server. Reset stmt: The thread is resetting a prepared statement. Set option: The thread is setting or resetting a client statement-execution option. Shutdown: The thread is shutting down the server. Sleep: The thread is waiting for the client to send a new statement to it. Statistics:The thread is producing server-status information. Table Dump:The thread is sending table contents to a slave server. Time:Unused.