10.14.1 访问进程列表
本节讨论了进程信息的来源、查看进程信息所需的权限,以及进程列表项的内容。
进程信息来自以下来源:
-
SHOW PROCESSLIST语句:第15.7.7.30节,“SHOW PROCESSLIST语句”
-
mysqladmin命令:第6.5.2节,“mysqladmin — A MySQL Server Administration Program”
-
INFORMATION_SCHEMA PROCESSLIST表:第28.3.23节,“The INFORMATION_SCHEMA PROCESSLIST Table”
-
Performance Schema processlist表:第29.12.22.7节,“The processlist Table”
-
Performance Schema threads表的列,名称以PROCESSLIST_开头:第29.12.22.8节,“The threads Table”
-
sys schema processlist和session视图:第30.4.3.22节,“The processlist and x$processlist Views”,和第30.4.3.33节,“The session and x$session Views”
《threads》表与SHOW PROCESSLIST、INFORMATION_SCHEMA
PROCESSLIST和mysqladmin processlist相比,具有以下特点:
-
访问《threads》表不需要锁定mutex,并且对服务器性能的影响非常小。其他来源都需要锁定mutex,从而对性能产生负面影响。
Note《SHOW PROCESSLIST》的备用实现基于Performance Schema 《processlist》表,该表与《threads》表一样,不需要锁定mutex,并且具有更好的性能特点。详细信息,请参见第29.12.22.7节,“The processlist Table”。
-
《threads》表显示背景线程,这些线程其他来源不显示。此外,该表还提供了每个线程的额外信息,例如线程是否为前台或后台线程,以及与服务器相关的线程位置。这意味着《threads》表可以用来监控线程活动,而其他来源不能。
-
您可以启用或禁用Performance Schema线程监控,详细信息请参见第29.12.22.8节,“The threads Table”。
因此,对于DBA来说,使用其他线程信息来源进行服务器监控的人可能希望使用《threads》表来监控线程活动。
《sys》架构processlist
视图将性能chemathreads
表中的信息以更可访问的格式展现。《sys》架构session
视图将用户会话信息展现,如《sys》架构processlist
视图,但排除了背景进程。
对于大多数进程信息来源,如果您拥有PROCESS
特权,可以查看所有线程,即使这些线程属于其他用户。否则(没有PROCESS
特权),非匿名用户可以访问自己线程的信息,但不能访问其他用户的线程信息,匿名用户无法访问线程信息。
性能chemathreads
表也提供线程信息,但表访问使用不同的特权模型。请参阅第29.12.22.8节,“The threads Table”。
每个进程列表项包含多个信息。以下列表使用SHOW PROCESSLIST
输出的标签描述它们。其他进程信息来源使用相似标签。
-
Id
是与线程关联的客户端标识符。 -
User
和Host
表示与线程关联的账户。 -
db
是线程的默认数据库,或者NULL
如果没有选择数据库。 -
Command
和State
表示线程正在做什么。大多数状态对应于非常快速的操作。如果线程在某个状态中停留了许多秒钟,那可能需要调查问题。
以下部分列出了可能的
Command
值和State
值,按类别分组。一些值的含义是自明的。对于其他值,提供了额外的描述。Note检查进程列表信息的应用程序应该注意命令和状态可能会更改。
-
Time
表示线程当前状态的持续时间。线程的当前时间概念可能在某些情况下被改变:线程可以使用SET TIMESTAMP =
更改时间。对于副本 SQL 线程,值是副本主机的实际时间与最后一个复制事件的时间戳之间的秒数。请参阅 第19.2.3节,“Replication Threads”。value
-
Info
表示线程正在执行的语句,或者如果它正在执行无语句时为NULL
。对于SHOW PROCESSLIST
,该值仅包含语句的前 100 个字符。要查看完整的语句,请使用SHOW FULL PROCESSLIST
(或查询不同的进程信息源)。