SHOW PROCESSLIST语句
SHOW [FULL ]PROCESSLIST
SHOW PROCESSLIST
显示正在运行的线程。如果您有PROCESS
特权,则可以看到所有线程。否则,您只能看到自己的线程(即与您正在使用的MySQL帐户关联的线程)。如果您不使用FULL
关键字,那么该Info
字段中仅显示每个语句的前100个字符。
SHOW PROCESSLIST
如果收到“太多的连接”错误消息并想了解发生了什么,该语句将非常有用。MySQL保留一个额外的连接,供具有CONNECTION_ADMIN
或SUPER
特权的帐户使用,以确保管理员应始终能够连接并检查系统(假设您未将此特权授予所有用户)。
可以使用该KILL
语句杀死线程。请参见“ 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 5 rows in set (0.00 sec)
SHOW PROCESSLIST
输出包含以下列:
Id
连接标识符。这
ID
与INFORMATION_SCHEMA
PROCESSLIST
表的PROCESSLIST_ID
列,性能模式threads
表的列中显示并由CONNECTION_ID()
函数返回的值类型相同。User
发出该语句的MySQL用户。值表示
system user
服务器产生的非客户端线程,以在内部处理任务。这可能是复制从属服务器或延迟行处理程序上使用的I / O或SQL线程。对于system user
,在Host
列中未指定主机。unauthenticated user
是指已经与客户端连接相关联但尚未完成客户端用户身份验证的线程。event_scheduler
是指监视计划的事件的线程(请参见“MySQL事件计划程序”)。注意
甲
User
的值system user
是从不同的SYSTEM_USER
特权。前者指定内部线程。后者区分系统用户帐户和常规用户帐户类别(请参见“帐户类别”)。Host
发出该语句的客户端的主机名(除了
system user
,没有主机)。TCP / IP连接的主机名以格式报告,以便更轻松地确定哪个客户端在做什么。host_name:client_port
db
默认数据库(如果已选择);否则
NULL
。Command
线程正在执行的命令的类型。有关线程命令的描述,请参见“检查线程信息”。该列的值对应于客户端/服务器协议的命令和状态变量。请参见“服务器状态变量”。
COM_xxx
Com_xxx
Time
线程处于其当前状态的时间(以秒为单位)。对于从属SQL线程,该值是上次复制事件的时间戳与从属计算机的实时之间的秒数。请参见“复制实现细节”。
State
指示线程正在执行的操作,事件或状态。
State
值的说明可以在“检查线程信息”中找到。大多数状态对应于非常快速的操作。如果线程在给定状态下停留许多秒钟,则可能存在需要调查的问题。
对于
SHOW PROCESSLIST
声明中的价值State
是NULL
。Info
线程正在执行的语句,或者
NULL
未执行任何语句的语句。该语句可能是发送到服务器的那条语句,或者是最内部的语句(如果该语句执行其他语句)。例如,如果一条CALL
语句执行了正在执行一条SELECT
语句的存储过程,则该Info
值将显示该SELECT
语句。
还可从mysqladmin processlist命令,该INFORMATION_SCHEMA
PROCESSLIST
表和“性能模式”threads
表中获得过程信息(请参见“mysqladmin-用于管理MySQL服务器的客户端”,“ INFORMATION_SCHEMA PROCESSLIST表”和.18.5,“线程表”)。与由于需要互斥锁而对INFORMATION_SCHEMA
PROCESSLIST
表和SHOW PROCESSLIST
语句造成负面性能影响的表相比,对表和语句的访问threads
不需要互斥锁,并且对服务器性能的影响最小。的threads
table还显示了有关后台线程的信息,而该PROCESSLIST
表SHOW PROCESSLIST
却没有。这意味着threads
可以用来监视其他线程信息源无法监视的活动。