mysql 分析慢查询

要分析 MySQL 中的慢查询,可以使用以下方法和工具:

  1. 启用慢查询日志:

    • 步骤 :
      1. 打开 MySQL 配置文件(my.cnf 或 my.ini)。

      2. 添加或修改以下参数:

        复制代码
        slow_query_log = 1
        slow_query_log_file = /path/to/your/mysql-slow.log
        long_query_time = 2

        这里的 long_query_time 设置为 2 秒,即查询超过 2 秒的将被记录到慢查询日志中。 3. 重启 MySQL 服务以应用配置。 4. 确认设置生效:

        复制代码
        SHOW VARIABLES LIKE 'slow_query_log';
        SHOW VARIABLES LIKE 'slow_query_log_file';
        SHOW VARIABLES LIKE 'long_query_time';

2.分析慢查询日志:

  • 使用 mysqldumpslow : mysqldumpslow 是一个用于分析慢查询日志的命令行工具。

    • 基本用法:

      mysqldumpslow -s t /path/to/your/mysql-slow.log

  • 这里的 -s t 表示按时间排序。

  • 常用选项:

    • -s : 排序方式(c - 计数, l - 锁时间, r - 返回记录, t - 查询时间, al - 平均锁时间, ar - 平均返回记录, at - 平均查询时间)
    • -t : 返回前 N 条查询
    • -g : 使用正则表达式匹配特定查询

3.使用 EXPLAIN 分析查询:

  • EXPLAIN 可以显示查询的执行计划,帮助了解查询执行的具体步骤。

  • 使用方法:

    EXPLAIN SELECT * FROM your_table WHERE your_conditions;

  • 输出解释:

    • id:查询中select的序列号。
    • select_type:查询的类型(SIMPLE、PRIMARY、UNION、SUBQUERY等)。
    • table:表名。
    • type:连接类型(ALL、index、range、ref、eq_ref、const、system、NULL)。
    • possible_keys:查询中可能使用的索引。
    • key:实际使用的索引。
    • key_len:使用的索引长度。
    • ref:索引的列。
    • rows:预计读取的行数。
    • Extra:额外信息(如Using index, Using where, Using temporary, Using filesort)。

4.使用性能模式(Performance Schema):

  • MySQL 的性能模式是一个用于监控服务器性能的工具。

  • 启用和配置性能模式:

    UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME = 'events_statements_history';
    UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME = 'events_statements_current';

查询慢查询信息:

复制代码
SELECT * FROM performance_schema.events_statements_history WHERE TIMER_WAIT > 2000000000;  -- 2秒

5.使用第三方工具:

  • pt-query-digest : pt-query-digest 是 Percona Toolkit 中的一个工具,用于分析慢查询日志和其他日志文件。
    • 使用方法,它会生成详细的分析报告,包含最慢的查询、频率、时间分布等信息。

      复制代码
      pt-query-digest /path/to/your/mysql-slow.log

​​​​​MySQL Workbench: MySQL Workbench 提供了一个图形界面工具,可以分析慢查询日志并生成报告。

通过上述方法,可以有效分析和优化 MySQL 的慢查询,找到性能瓶颈并进行针对性的优化。

相关推荐
EatFan15 分钟前
Spring Boot 4 迁移避坑清单:Jackson 3、starter 拆分与最低 JDK 口径核对(含若依/芋道/CRMEB 升级对照)
java·数据库·spring boot·spring boot 4·java 21·jakarta ee 11·jackson 3
其实防守也摸鱼19 分钟前
渗透测试学习计划(全栈综合 · 零基础进阶)
android·数据库·学习·安全·oracle·自动化·学习方法
ZealSinger19 分钟前
Go1.25 FlightRecorder慢请求截trace
网络·数据库·go
帷幕落秋28 分钟前
Mysql的安装,加固与远程访问
运维·数据库
龙腾AI白云38 分钟前
【轻量化大模型:低成本AI落地的产业新范式】
大数据·数据库·人工智能·机器学习
计算机编程指导师40 分钟前
【计算机毕设选题】基于Hadoop的电信网络诈骗话术语义特征挖掘分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·数据库·python
IT古董1 小时前
《FDE前沿部署工程师实战教程》31 - Enterprise AI Reliability:Agent稳定性与生产运维体系
大数据·数据库·人工智能
IT毕设梦工厂1 小时前
计算机毕业设计选题推荐:基于大数据的巧克力销售数据分析与可视化|毕业设计选题|计算机毕设|选题推荐|毕设指导|项目定制|源码|高质量项目
大数据·hadoop·mysql·数据挖掘·数据分析·spark·课程设计
人丰1 小时前
SPC 上线前,先把并发和容量算清楚
数据库·制造·设计规范
重生之小比特2 小时前
【C++进阶】02 Linux基本指令
java·数据库·c++