MySQL学习笔记

Day2:MySQL慢查询基础-查询慢原因

2018-07-15  本文已影响9人  蚂蚁窝大梦想

说在前面:
查询优化、索引优化、库表结构优化是查询性能优化的三驾马车。

完成一个完整的查询生命周期,查询需要在不同阶段花费时间,如网络、CPU计算、生成统计信息、执行计划、锁互斥等待,底层存储引擎调用,需要在内存操作,CPU操作和内存不足导致I/O操作上时间消耗。

1. 请求多余的数据

查询数据超过实际程序需数据,冗余数据被程序丢弃。这会对MYSQL服务器带来额外的负担,增大网络开销,同时会消耗应用服务器的CPU 及内存资源。

LIMIT 解决查询无用的数据

仅获取需要的列

错误示例:SELECT * FORM ... ...
如有缓存或提高代码复用性,上面示例也可考虑

2. 扫描额外的记录

衡量查询最简单三个指标:响应时间、扫面行数、返回行数。

响应时间即:服务时间和排队时间。

EXPLAIN访问类型:全表扫面到索引扫面、范围扫描、唯一索引扫描、常数引用等。以上列举是速度从慢到快,扫描行数从多到少。
查询中无合适访问类型,最好办法是增加一个合适的索引。

WHERE条件拓扑

上一篇 下一篇

猜你喜欢

热点阅读