下面的讨论列举了进程信息的来源、查看进程信息所需的权限,并描述了进程列表条目的内容。
过程信息可从以下来源获得:
mysqladmin processlist命令: 第4.5.2 节,“mysqladmin — 一个 MySQL 服务器管理程序”
表
INFORMATION_SCHEMA
PROCESSLIST
: 第 24.3.18 节,“INFORMATION_SCHEMA PROCESSLIST 表”性能模式
processlist
表: 第 25.12.16.3 节,“进程表”名称前缀为Performance Schema
threads
表列PROCESSLIST_
: 第 25.12.16.4 节,“线程表”sys
架构processlist
和session
视图: 第26.4.3.22 节,“进程列表和 x$processlist 视图”,以及 第 26.4.3.33 节,“会话和 x$session 视图”
该threads
表与
SHOW PROCESSLIST
、
INFORMATION_SCHEMA
PROCESSLIST
和
mysqladmin processlist的比较如下:
访问该
threads
表不需要互斥锁,并且对服务器性能的影响最小。其他来源对性能有负面影响,因为它们需要互斥量。笔记SHOW PROCESSLIST
从 MySQL 5.7.39 开始,基于 Performance Schemaprocesslist
表 的替代实现 是可用的,它与threads
表一样,不需要互斥量并且具有更好的性能特征。有关详细信息,请参阅 第 25.12.16.3 节,“进程列表”。该
threads
表显示了后台线程,而其他来源则没有。它还为每个线程提供其他来源不提供的附加信息,例如线程是前台线程还是后台线程,以及与线程关联的服务器内的位置。这意味着该threads
表可用于监视其他来源无法监视的线程活动。您可以启用或禁用 Performance Schema 线程监视,如 第 25.12.16.4 节,“线程表”中所述。
由于这些原因,使用其他线程信息源之一执行服务器监视的 DBA 可能希望改为使用该threads
表进行监视。
sys
架构
视图以更易于访问的格式processlist
显示来自性能架构表的信息
。模式
视图显示有关用户会话的信息,如
threads
模式视图
,但过滤掉了后台进程。
sys
session
sys
processlist
For most sources of process information, if you have the
PROCESS
privilege, you can see
all threads, even those belonging to other users. Otherwise
(without the PROCESS
privilege), nonanonymous users have access to information
about their own threads but not threads for other users, and
anonymous users have no access to thread information.
The Performance Schema threads
table also provides thread information, but table access uses
a different privilege model. See
Section 25.12.16.4, “The threads Table”.
每个进程列表条目包含几条信息。以下列表使用SHOW PROCESSLIST
输出中的标签描述了它们。其他过程信息源使用类似的标签。
Id
是与线程关联的客户端的连接标识符。User
并Host
指明与线程关联的帐户。db
是线程的默认数据库,或者NULL
如果未选择任何数据库。Command
并State
指出线程正在做什么。Most states correspond to very quick operations. If a thread stays in a given state for many seconds, there might be a problem that needs to be investigated.
The following sections list the possible
Command
values, andState
values grouped by category. The meaning for some of these values is self-evident. For others, additional description is provided.NoteApplications that examine process list information should be aware that the commands and states are subject to change.
Time
indicates how long the thread has been in its current state. The thread's notion of the current time may be altered in some cases: The thread can change the time withSET TIMESTAMP =
. For a replica SQL thread, the value is the number of seconds between the timestamp of the last replicated event and the real time of the replica host. See Section 16.2.3, “Replication Threads”.value
Info
指示线程正在执行的语句,或者NULL
它是否正在执行任何语句。对于SHOW PROCESSLIST
,此值仅包含语句的前 100 个字符。要查看完整的语句,请使用SHOW FULL PROCESSLIST
(或查询不同的过程信息源)。