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.分析慢查询日志:

  • 使用 mysqldumpslowmysqldumpslow 是一个用于分析慢查询日志的命令行工具。
    • 基本用法:
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-digestpt-query-digest 是 Percona Toolkit 中的一个工具,用于分析慢查询日志和其他日志文件。
    • 使用方法,它会生成详细的分析报告,包含最慢的查询、频率、时间分布等信息。
      pt-query-digest /path/to/your/mysql-slow.log
      

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值