如何查看 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