高性能MySQL读书笔记(第六章上)

前言

我们觉得查询慢的时候就要开始考虑优化了,那么“慢”是怎么理解呢?当一个查询任务超过了我们能忍受的时间,就是“慢”了,我们就要考虑下优化。前面我们学习了索引优化、库表结构优化,下面我们一步步看查询优化。

查询生命周期

一个查询相当于服务端的一个任务,从开始到结束是一个完整生命周期。那么这个查询过程是什么呢?按照查询的先后顺序可以分为:从客户端请求–>到服务器–>服务器解析–>生成执行计划–>执行–>返回结果到客户端。而**其中的“执行”是最重要的阶段,包括了大量为了检索数据到数据引擎的调用以及调用后的数据处理,包括排序、分组等。**而了解了各个生命周期的职责,会帮助你理解为什么要这么优化一个查询。

查询执行的基础

先了解下MySQL是怎么优化和执行查询的,上图:

MySQL客户端/服务端通信

客户端和服务端通信是半双工的,要么是客户端在向服务端发送数据,要么是服务端在向客户端发送数据,不可能同时进行。也就意味着,一旦一段开始发送数据,另一端只能等到接收完成,才能进行响应。

查询缓存

查询优化处理

查询执行引擎

返回结果到客户端

查询为什么会慢

最基本的原因是访问数据太多,这里访问是服务端执行扫描的数据,区别于返会个客户端的数据。而访问数据过多,就要考虑两点:
1、是否向数据库请求了不需要的数据:
2、MySQL是否扫描了额外的数据:

重构查询的方法(重要)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值