【Java 面试八股学习 自用版】MYSQL优化-------定位慢查询以及分析

定位慢查询以及分析

导致慢查询的一些原因

  1. 聚合查询
  2. 多表查询
  3. 表数据量过大查询
  4. 深度分页查询
    此时的表现为 :页面加载过慢 接口压测响应时间过长(1s以上)。

定位方法(定位哪一条)

方法一 开源工具

  1. 调试工具 Arthas
  2. 运维工具 prometheus Skywalking

MySql自带慢日志

需要在配置文件中开启 设置开启以及时间阈值(ps 2s)
注意:一般在调试阶段开启

注意 一般结合自己项目说!!!!!

分析慢SQL语句的原因

  1. 聚合查询
  2. 多表查询
  3. 表数据量过大查询
  4. 深度分页查询

采用 EXPLAIN 或者 DESC命令获取执行SELECT的信息
方法 直接在语句前加 explain 或者desc


possible key 当前sql可能会使用到的索引
key 当前sql实际命中的索引
key_len 索引占用的大小

主要是后两条:确定索引本身是否失效

Extra 额外的优化建议(了解是否回表)

Extra 含义
Using where; Using Index 查找使用了索引,需要的数据都在索引列中能找到,不需要回表查询数据
Using index condition 查找使用了索引,但是需要回表查询数据

type 这条sql的连接的类型,性能由好到差为NULL、system、const、eq_ref、ref、range、index、all (了解是否有进一步优化空间,是否有index以上的)

  • system:查询系统中的表
  • const:根据主键查询
  • eq ref:主键索引查询或唯一索引查询
  • ref:索引查询
  • range:范围查询广
  • index:索引树扫描
  • all:全盘扫描
    注意:建议保持在index以下

优化超大分页

小数据集驱动大数据集
优化超大分页处理,采用覆盖索引子查询形式优化

PS:

select * from db limit 1000000,10;
//改成
select *
from db d,
	(select id from db order by id limit 1000000,10)  a
where d.id = a.id;
  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值