mysql 分析慢查询

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

  1. 启用慢查询日志:

    • 步骤 :
      1. 打开 MySQL 配置文件(my.cnfmy.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 的慢查询,找到性能瓶颈并进行针对性的优化。

相关推荐
2501_941805931 天前
在大阪智能零售场景中构建支付实时处理与高并发顾客行为分析平台的工程设计实践经验分享
数据库
李慕婉学姐1 天前
【开题答辩过程】以《基于JAVA的校园即时配送系统的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·开发语言·数据库
珠海西格电力1 天前
零碳园区有哪些政策支持?
大数据·数据库·人工智能·物联网·能源
哈里谢顿1 天前
记录一次sql优化记录
mysql
数据大魔方1 天前
【期货量化实战】日内动量策略:顺势而为的短线交易法(Python源码)
开发语言·数据库·python·mysql·算法·github·程序员创富
Chasing Aurora1 天前
数据库连接+查询优化
数据库·sql·mysql·prompt·约束
倔强的石头_1 天前
【金仓数据库】ksql 指南(六)—— 创建与管理用户和权限(KingbaseES 安全控制核心)
数据库
小熊officer1 天前
Python字符串
开发语言·数据库·python
渐暖°1 天前
JDBC直连ORACLE进行查询
数据库·oracle
萧曵 丶1 天前
Next-Key Lock、记录锁、间隙锁浅谈
数据库·sql·mysql·mvcc·可重复读·幻读