首页 > 其他 > 详细

慢查询优化

时间:2020-10-16 23:26:15      阅读:48      评论:0      收藏:0      [点我收藏+]

是否向数据库请求了不需要的数据

  • 查询求情超过了实际需要的数据,多余的数据会被应用程序丢弃
  • 对MySQL服务器增加了网络开销,消耗了应用服务器的CPU和内存资源

常见的错误,MySQL执行查询,查询出全部结果集,客户端应用程序接收全部结果集数据,抛弃大部分数据

  • 最简单的处理方式是加limit

拒绝SELECT *,指定字段

避免重复查询相同的数据,对重复的数据进行缓存

MySQL是否在扫描额外的记录

  • 响应时间
  • 扫描的行数
  • 返回的行数

三项指标都会记录到MySQL的慢日志中

响应时间 = 服务时间 + 排队时间

  • 服务时间,数据库处理这个查询花了多少时间
  • 排队时间,比如IO等待时间和锁的等待时间

扫描的行数和返回的行数,理想情况下扫描的行数和返回的行数相同,但实际比率在 1:1和10:1之间

扫描的行数和返回的类型,使用explain语句,查看访问列和索引等信息

添加一个合适的索引可以有效避免全表扫描

WHERE的使用方式(由好到坏)

  • 索引中使用where过滤不匹配的记录,在存储引擎层完成
  • 使用索引覆盖扫描返回记录,直接从索引中过滤不需要的记录,在MySQL服务层完成(Extra中出现Using Index)
  • 从数据表中返回数据,然后过滤不满足条件的记录,先从表读记录再过滤(Extra中出现Using Where)

技术分享图片

 

慢查询优化

原文:https://www.cnblogs.com/YC-L/p/13828587.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!