以下讨论枚举了进程信息的来源、查看进程信息所需的权限,并描述了进程列表条目的内容。
进程信息来自以下来源:
-
The mysqladmin processlist 命令:第 6.5.2 节,“mysqladmin — 一个 MySQL 服务器管理程序”
-
The
INFORMATION_SCHEMAPROCESSLIST表:第 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
sysschemaprocesslist和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(或查询其他进程信息源)。