如何查看 MySQL 当前执行了哪些语句?

MySQL 是一个常用的关系型数据库管理系统,我们在使用 MySQL 进行开发和维护数据库时,有时会遇到需要查看当前正在执行的 SQL 语句的情况。本文将介绍几种方法来查看 MySQL 当前执行的语句。

方法一:使用 SHOW PROCESSLIST 命令

MySQL 提供了 SHOW PROCESSLIST 命令,它可以显示当前连接到 MySQL 服务器的所有进程信息,包括正在执行的 SQL 语句。我们可以使用以下的 SQL 语句来查看正在执行的语句:

SHOW PROCESSLIST;

执行该语句后,MySQL 将返回一个结果集,其中包含了所有正在执行的语句的相关信息,包括连接 ID、用户、主机、数据库、当前状态以及执行的 SQL 语句。

下面是一个示例:

mysql> SHOW PROCESSLIST;
+----+------+-----------+---------+---------+------+-------+------------------+
| Id | User | Host      | db      | Command | Time | State | Info             |
+----+------+-----------+---------+---------+------+-------+------------------+
|  1 | root | localhost | mydb    | Sleep   |  500 |       |                  |
|  2 | root | localhost | mydb    | Query   |    0 | init  | SHOW PROCESSLIST |
+----+------+-----------+---------+---------+------+-------+------------------+

在上面的示例中,我们可以看到有两个连接正在活动。连接 ID 为 1 的连接处于 Sleep 状态,连接 ID 为 2 的连接正在执行 SHOW PROCESSLIST 命令。

方法二:使用 PERFORMANCE_SCHEMA

MySQL 5.5 及以上版本引入了 PERFORMANCE_SCHEMA,它是一个用于查看和分析 MySQL 性能的工具。PERFORMANCE_SCHEMA 提供了多个视图来查看正在执行的语句以及其他与性能相关的信息。

我们可以使用以下的 SQL 语句来查看当前正在执行的语句:

SELECT * FROM performance_schema.events_statements_current;

执行该语句后,MySQL 将返回一个结果集,其中包含了所有正在执行的语句的相关信息,包括线程 ID、用户、主机、数据库、当前状态以及执行的 SQL 语句。

下面是一个示例:

mysql> SELECT * FROM performance_schema.events_statements_current;
+----------------------+-------------+-----------+--------------------+------------------+-------------------+----------------+------------+--------------+-----------+----------------+----------------------+-------------------------+-----------------------+-----------------------+----------------------+-------------------------+---------------------+-----------------+-----------------+--------------------------+---------------------------+--------------------------+-------------------+-------------------------------+------------------------+-----------------------+-------------------------------+---------------------+-------------------+-------------------+----------------------+----------------------+-----------------------------+----------------------------+-------------------------------+-----------------------+-------------------------------+----------------------------+---------------------------+------------------------+---------------------+------------------+----------------+------------------+----------------------+
| THREAD_ID            | USER        | HOST      | DB                 | COMMAND_TYPE     | SQL_TEXT          | CURRENT_SCHEMA | LOCK_TIME  | SQL_DELAYED  | ROWS_SENT | ROWS_EXAMINED | CREATED_TMP_DISK_TABLES | CREATED_TMP_TABLES       | SELECT_FULL_JOIN  | SELECT_FULL_RANGE  | SELECT_RANGE_CHECK | SELECT_SCAN               | SORT_MERGE_PASSES   | SORT_RANGE       | SORT_ROWS        | SORT_SCAN                 | TIMESTAMP               | TABLE_LOCKS_IMMEDIATE | TABLE_LOCKS_WAITED | TABLE_ROWS_READ                   | TABLE_ROWS_UPDATED      | TRX_ID                | TRX_REQUESTED_LOCK_ID              | TRX_ROWS_LOCKED      | TRX_ROWS_UPDATED | TRX_WAIT_STARTED | TRX_WAIT_TIME_MS | TRX_WAITED_LONG            | TRX_WAITED               | TRX_ROWS_AFFECTED                | TRX_ROWS_ROLLBACKED   | TRX_ROWS_VALIDATED              | TRX_SQL_STATE       | TRX_START               | TRX_STATE                    | TRX_SYSTEM_PAGE_NUMBER | TRX_UNDO_LOG_PAGE_NUMBER | TRX_UNDO_LOG_REC_NUMBER |
+----------------------+-------------+-----------+--------------------+------------------+-------------------+----------------+------------+--------------+-----------+----------------+----------------------+-------------------------+-----------------------+-----------------------+----------------------+-------------------------+---------------------+-----------------+-----------------+--------------------------+---------------------------+--------------------------+-------------------+-------------------------------+------------------------+-----------------------+-------------------------------+---------------------+-------------------+-------------------+----------------------+----------------------+-----------------------------+----------------------------+-------------------------------+-----------------------+-------------------------------+----------------------------+---------------------------+------------------------+---------------------+------------------+----------------+------------------+----------------------+
|                 5872 | root        | localhost | mydb               | SELECT           | SELECT * FROM mytable | my