基础

慢查询

  1. 聚合查询 - 新增临时表
  2. 多表查询 - 优化 sql 语句
  3. 表数据量过大查询 - 添加索引
  4. 深度分页查询 - 覆盖查询 + 子查询

如何定位?

  1. 工具: Arthas Skywalking
  2. MySQL 慢日志:/var/lib/mysql/localhost-slow.log

语句执行分析

explain select / desc

  • possible_key 可能用到的索引
  • key 实际命中的索引 => 是否命中索引
  • key_len 索引占用大小
  • extra 额外优化建议:
    • Using where; Using index;
    • Using index condition 回表查询
  • type 展示性能(由好到差)
    • NULL / system
    • const 根据主键查询
    • eq_ref 主键索引查询或唯一索引查询
    • ref 索引查询
    • range 范围查询
    • index 索引树扫描 - 需要优化
    • all 全盘扫描 - 需要优化