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