MySql 查看正在执行的 SQL和已经执行的Sql

查看正在执行的 SQL

1. 使用 SHOW PROCESSLIST 语句


  • 功能:SHOW PROCESSLIST 语句会显示当前 MySQL 服务器中所有活动连接的相关信息,包括正在执行的 SQL 语句。
  • 示例:在 MySQL 客户端(如 MySQL 命令行工具、Navicat 等)中执行以下语句:

收起
sql
 
SHOW PROCESSLIST;

  • 结果解读:
    • Id:连接的唯一标识符。
    • User:执行查询的用户。
    • Host:连接的客户端主机。
    • db:当前连接使用的数据库。
    • Command:当前执行的命令类型,如 Query 表示正在执行查询,Sleep 表示连接处于空闲状态。
    • Time:查询已经执行的时间(以秒为单位)。
    • State:查询的当前状态,如 Sorting resultSending data 等。
    • Info:正在执行的 SQL 语句内容。
  • 筛选特定查询:可以结合 WHERE 子句来筛选特定的连接或查询。例如,只查看执行时间超过 10 秒的查询:

收起
sql
 
SHOW PROCESSLIST WHERE Time > 10;

2. 查询 INFORMATION_SCHEMA.PROCESSLIST 表


  • 功能:INFORMATION_SCHEMA.PROCESSLIST 表存储了与 SHOW PROCESSLIST 语句类似的信息,你可以使用 SQL 查询语句对其进行更灵活的操作。
  • 示例:

收起
sql
 
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;

  • 优势:可以使用更复杂的 SQL 操作,如排序、筛选、分组等。例如,按照执行时间降序排列,查看前 5 个执行时间最长的查询:

收起
sql
 
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
ORDER BY Time DESC
LIMIT 5;

查看已经执行的 SQL

1. 开启通用查询日志(General Query Log)


  • 功能:通用查询日志会记录 MySQL 服务器接收到的所有 SQL 语句,包括查询、插入、更新、删除等操作。
  • 临时开启:在 MySQL 客户端中执行以下语句可以临时开启通用查询日志:

收起
sql
 
SET GLOBAL general_log = 'ON';

你可以通过以下语句查看日志文件的位置:

收起
sql
 
SHOW VARIABLES LIKE 'general_log_file';

临时开启的设置在 MySQL 服务器重启后会失效。

  • 永久开启:需要修改 MySQL 的配置文件(如 my.cnf 或 my.ini)。在 [mysqld] 部分添加或修改以下配置项:

收起
ini
 
general_log = 1
general_log_file = /var/log/mysql/mysql.log

然后重启 MySQL 服务使配置生效。

  • 注意事项:开启通用查询日志会对服务器性能产生一定影响,因为需要将每个 SQL 语句记录到日志文件中,不建议在生产环境长期开启。

2. 使用慢查询日志(Slow Query Log)


  • 功能:慢查询日志会记录执行时间超过指定阈值的 SQL 语句,通过分析慢查询日志可以找出执行效率低下的查询。
  • 配置慢查询日志:
    • 临时开启:在 MySQL 客户端中执行以下语句:

收起
sql
 
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2; -- 设置查询执行时间阈值为 2 秒

  • 永久开启:修改 MySQL 配置文件,在 [mysqld] 部分添加或修改以下配置项:

收起
ini
 
slow_query_log = 1
long_query_time = 2
slow_query_log_file = /var/log/mysql/mysql-slow.log

然后重启 MySQL 服务。

  • 查看慢查询日志:可以使用文本编辑器打开慢查询日志文件查看其中记录的 SQL 语句。也可以使用工具(如 pt-query-digest)对慢查询日志进行分析。

posted on   刘顺利  阅读(33)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示