### 8.14.1 访问进程列表

以下讨论列举了进程信息的来源、查看进程信息所需的权限，并描述了进程列表条目的内容。

-   [过程信息的来源](processlist-access.html#processlist-sources)

-   [访问进程列表所需的权限](processlist-access.html#processlist-privileges)

-   [进程列表条目的内容](processlist-access.html#processlist-content)

#### 过程信息的来源

流程信息可从以下来源获得：

-   这[`显示进程列表`](show-processlist.html)陈述：[第 13.7.7.29 节，“SHOW PROCESSLIST 语句”](show-processlist.html)

-   这[**mysqladmin 进程列表**](mysqladmin.html)命令：[第 4.5.2 节，“mysqladmin - MySQL 服务器管理程序”](mysqladmin.html)

-   这`INFORMATION_SCHEMA` [`进程列表`](information-schema-processlist-table.html)桌子：[第 26.3.23 节，“信息\_SCHEMA PROCESSLIST 表”](information-schema-processlist-table.html)

-   性能模式[`进程列表`](performance-schema-processlist-table.html)桌子：[第 27.12.21.5 节，“进程列表表”](performance-schema-processlist-table.html)

-   性能模式[`线程`](performance-schema-threads-table.html)名称前缀为的表列`PROCESSLIST_`：[第 27.12.21.6 节，“线程表”](performance-schema-threads-table.html)

-   这`系统`图式[`进程列表`](sys-processlist.html)和[`会议`](sys-session.html)意见：[第 28.4.3.22 节，“processlist 和 x$processlist 视图”](sys-processlist.html)， 和[第 28.4.3.33 节，“会话和 x$session 视图”](sys-session.html)

    这[`线程`](performance-schema-threads-table.html)表比较[`显示进程列表`](show-processlist.html),`INFORMATION_SCHEMA` [`进程列表`](information-schema-processlist-table.html)， 和[**mysqladmin 进程列表**](mysqladmin.html)如下：

-   访问[`线程`](performance-schema-threads-table.html)table 不需要互斥体，对服务器性能的影响最小。其他来源具有负面的性能后果，因为它们需要互斥体。

    笔记

    从 MySQL 8.0.22 开始，另一种实现[`显示进程列表`](show-processlist.html)基于性能模式可用[`进程列表`](performance-schema-processlist-table.html)表，就像[`线程`](performance-schema-threads-table.html)表，不需要互斥体并且具有更好的性能特征。有关详细信息，请参阅[第 27.12.21.5 节，“进程列表表”](performance-schema-processlist-table.html).

-   这[`线程`](performance-schema-threads-table.html)表显示后台线程，其他来源没有。它还为每个线程提供其他来源没有的附加信息，例如线程是前台线程还是后台线程，以及与线程关联的服务器中的位置。这意味着[`线程`](performance-schema-threads-table.html)table 可用于监视其他来源无法监视的线程活动。

-   您可以启用或禁用 Performance Schema 线程监视，如中所述[第 27.12.21.6 节，“线程表”](performance-schema-threads-table.html).

    由于这些原因，使用其他线程信息源之一执行服务器监视的 DBA 可能希望使用[`线程`](performance-schema-threads-table.html)代替表。

    这`系统`图式[`进程列表`](sys-processlist.html)视图显示来自性能模式的信息[`线程`](performance-schema-threads-table.html)以更易于访问的格式显示表格。这`系统`图式[`会议`](sys-session.html)视图显示有关用户会话的信息，例如`系统`图式[`进程列表`](sys-processlist.html)查看，但过滤掉了后台进程。

#### 访问进程列表所需的权限

对于大多数过程信息来源，如果您有[`过程`](privileges-provided.html#priv_process)权限，您可以查看所有线程，甚至是属于其他用户的线程。否则（没有[`过程`](privileges-provided.html#priv_process)特权），非匿名用户可以访问有关他们自己的线程的信息，但不能访问其他用户的线程，匿名用户无权访问线程信息。

性能模式[`线程`](performance-schema-threads-table.html)table 还提供线程信息，但 table 访问使用不同的权限模型。看[第 27.12.21.6 节，“线程表”](performance-schema-threads-table.html).

#### 进程列表条目的内容

每个进程列表条目包含几条信息。以下列表使用来自的标签描述它们[`显示进程列表`](show-processlist.html)输出。其他过程信息源使用类似的标签。

-   `Id`是与线程关联的客户端的连接标识符。

-   `用户`和`主持人`指示与线程关联的帐户。

-   `D b`是线程的默认数据库，或者`空值`如果没有选择。

-   `命令`和`状态`指示线程正在做什么。

    大多数状态对应于非常快速的操作。如果一个线程在给定状态下停留数秒，则可能存在需要调查的问题。

    以下部分列出了可能的`命令`价值观，以及`状态`按类别分组的值。其中一些值的含义是不言而喻的。对于其他人，提供了额外的描述。

    笔记

    检查进程列表信息的应用程序应该知道命令和状态可能会发生变化。

-   `时间`指示线程处于其当前状态的时间。在某些情况下，线程对当前时间的概念可能会改变：线程可以用[`设置时间戳 = *`价值`*`](set-variable.html).对于副本 SQL 线程，该值是上次复制事件的时间戳与副本主机的实际时间之间的秒数。看[第 17.2.3 节，“复制线程”](replication-implementation-details.html).

-   `信息`指示线程正在执行的语句，或`空值`如果它不执行任何语句。为了[`显示进程列表`](show-processlist.html)，此值仅包含语句的前 100 个字符。要查看完整的语句，请使用[`显示完整的进程列表`](show-processlist.html)（或查询不同的进程信息源）。
