一、查看正在执行的 SQL

方法 1:通过 phpMyAdmin 状态页面

  1. 登录 phpMyAdmin。

  2. 顶部导航栏点击 「状态」(Status)。

  3. 「服务器」(Server)选项卡下,找到 「进程列表」(Processes)。

    • 这里会显示所有当前连接的会话和正在执行的 SQL 语句。

    • 重点关注 「Time」 列(执行时间长的可能是问题查询)。

方法 2:直接运行 SQL 命令

  1. 在 phpMyAdmin 的 「SQL」 标签页中执行:

  • 结果包含:

    • Id:连接 ID(可用来终止查询)。

    • User:执行查询的用户。

    • Time:已执行时间(秒)。

    • State:当前状态(如 Sending data、Copying to tmp table)。

    • Info:正在执行的 SQL 语句(关键信息)。

 

二、查看慢 SQL

前提条件:已启用慢查询日志

检查慢查询日志是否开启

如果未启用,需在 MySQL 配置文件(如 my.cnf)中添加(永久开启):

然后重启 MySQL:

通过 phpMyAdmin /MySQL执行 SQL 命令(临时生效)

  • 登录 phpMyAdmin,进入 SQL 标签页

  • 执行以下命令(需管理员权限):

注意

  • 这种方式重启 MySQL 后会失效。

  • 如果报错 权限不足,需使用上面的方法 修改配置文件。

检查当前慢查询日志配置

  • 如果 log_output = FILE,则日志写入文件(默认)。

  • 如果 log_output = TABLE,则日志写入 mysql.slow_log 表。

  • 如果 log_output = FILE,TABLE,则同时写入文件和表。

方法 1:修改 MySQL 配置文件(推荐)

编辑 MySQL 配置文件(路径可能不同):

在 [mysqld] 段落下添加

重启 MySQL

方法 2:动态设置(临时生效,重启后失效)

步骤 3:验证是否生效

  • 如果 log_output = TABLE,并且 mysql.slow_log 表中有数据,说明配置成功。

步骤 4:清理慢日志表(可选)

注意事项

  1. mysql.slow_log 表结构

    • start_time:查询开始时间。

    • query_time:查询耗时。

    • sql_text:完整的 SQL 语句。

    • user_host:执行查询的用户和主机。

  2. 性能影响

    • 日志写入表可能比写入文件稍慢,但更方便查询和分析。

    • 如果慢查询很多,建议定期清理 mysql.slow_log 表。

  3. 权限要求

    • 修改配置需要 SUPER 权限。

    • 查询 mysql.slow_log 需要 SELECT 权限。

 

方法 1:通过 phpMyAdmin 直接查询

执行以下 SQL(MySQL的慢日志需要设置TABLE模式):

    • 结果包含:

      • start_time:查询开始时间。

      • query_time:执行耗时。

      • sql_text:慢 SQL 内容

 方法 2:查看日志文件(需服务器权限)

如果慢查询日志文件已配置,通过命令行查看:

或使用 mysqldumpslow 工具分析:

三、终止问题查询(可选)

如果发现长时间运行的查询,可以通过连接 ID 终止:

四、注意事项

  1. 权限要求

    • 查看 PROCESSLIST 和 slow_log 需要 PROCESS 和 SUPER 权限。

  2. 生产环境慎用 KILL

    • 强制终止查询可能导致数据不一致。

  3. 定期清理慢日志

    • 避免日志文件过大: