以下讨论枚举了进程信息的来源、查看进程信息所需的权限,并描述了进程列表条目的内容。
进程信息来自以下来源:
-
The mysqladmin processlist 命令:第 6.5.2 节,“mysqladmin — 一个 MySQL 服务器管理程序”
-
The
INFORMATION_SCHEMA
PROCESSLIST
表:第 28.3.23 节,“INFORMATION_SCHEMA PROCESSLIST 表” -
The Performance Schema
processlist
表:第 29.12.22.7 节,“processlist 表” -
The Performance Schema
threads
表的列名以PROCESSLIST_
开头:第 29.12.22.8 节,“threads 表” -
The
sys
schemaprocesslist
和session
视图:第 30.4.3.22 节,“processlist 和 x$processlist 视图”,和 第 30.4.3.33 节,“session 和 x$session 视图”
The threads
表与 SHOW PROCESSLIST
、INFORMATION_SCHEMA
PROCESSLIST
和 mysqladmin processlist 的比较如下:
-
访问
threads
表不需要互斥锁,并且对服务器性能的影响最小。其他来源都需要互斥锁,会对服务器性能产生负面影响。Note基于 Performance Schema
processlist
表的替代实现可用于SHOW PROCESSLIST
,该实现不需要互斥锁,并且具有更好的性能特性。有关详细信息,请参阅 第 29.12.22.7 节,“processlist 表”。 -
该
threads
表显示背景线程,而其他来源不显示。它还提供了其他来源不提供的每个线程的附加信息,例如线程是否为前台或背景线程,以及与服务器关联的位置。这意味着threads
表可以用于监控其他来源无法监控的线程活动。 -
您可以启用或禁用性能模式线程监控,如 第 29.12.22.8 节,“线程表” 所述。
因此,使用其他线程信息来源的 DBA 可能希望使用 threads
表来监控。
sys 模式 processlist
视图以更易访问的格式呈现性能模式 threads
表的信息。sys 模式 session
视图呈现用户会话信息,类似于 sys
模式 processlist
视图,但过滤掉了背景进程。
对于大多数进程信息来源,如果您拥有 PROCESS
权限,您可以查看所有线程,包括其他用户的线程。否则(没有 PROCESS
权限),非匿名用户可以访问自己的线程信息,但不能访问其他用户的线程信息,而匿名用户没有线程信息访问权限。
性能模式 threads
表也提供线程信息,但表访问使用不同的权限模型。请参阅 第 29.12.22.8 节,“线程表”。
每个进程列表条目包含多个信息部分。以下列表使用 SHOW PROCESSLIST
输出的标签描述它们。其他进程信息来源使用类似的标签。
-
Id
是与客户端关联的连接标识符。 -
User
和Host
指示线程关联的账户。 -
db
是线程的默认数据库,或者NULL
如果没有选择。 -
Command
和State
指示线程正在执行的操作。大多数状态对应非常快速的操作。如果线程停留在某个状态数秒钟,可能需要调查问题。
以下部分列出了可能的
Command
值和State
值,按类别分组。一些值的含义是自明的,而其他值需要附加描述。Note检查进程列表信息的应用程序应该注意命令和状态可能会更改。
-
Time
指示线程在当前状态下的时间。线程的当前时间可能会在某些情况下更改:线程可以使用SET TIMESTAMP =
更改时间。对于副本 SQL 线程,值是最后一个复制事件的时间戳和副本主机的实际时间之间的秒数。请参阅 第 19.2.3 节,“复制线程”。value
-
信息
表示线程正在执行的语句,或者NULL
如果它没有执行语句。对于SHOW PROCESSLIST
,该值仅包含语句的前 100 个字符。要查看完整的语句,请使用SHOW FULL PROCESSLIST
(或查询其他进程信息源)。