SQL语句执行速度慢的原因

SQL语句执行速度慢

前言:
针对SQL语句执行很慢,我们分两种情况去看。一种是一直执行都很慢,二是仅仅只有几条SQL语句执行慢。

速度偶尔变慢:

1、数据库正在刷新脏页(flush)
要知道,我们对数据库进行增删改之后,内存中修改的数据不会马上同步到磁盘,而是先记录在日志中,等到空闲时间,才会通过日志将内存数据同步到磁盘中。这个同步数据过程就是刷新脏页。

刷新脏页触发条件:
1、MySQL认为系统空闲
2、MySQL正常关闭的时候,也会刷新脏页。
3、日志写满了,不得不中断其他操作,先进行刷新脏页,然后清空对应日志。
4、内存不够用了,必须通过淘汰机制,淘汰一部分内存数据页,若淘汰的是脏页,就必须先进行刷新脏页!

2、需要访问的数据被其他事务上锁
需要访问的表或者说某一行正在被其他事务使用,且上锁

速度一直很慢

1、查询数据复杂,而又没有用上索引。

2、字段有索引,但没用上
具体情况查询有关索引失效的原因,这里附上一张图
在这里插入图片描述
3、系统选错索引
我们知道,系统在选择索引时,会根据查询行数去比较走哪个索引更节约资源,但是系统不是真人,也会出现错误判断,导致不走索引,而是直接全表扫描(聚集索引)。


版权声明:本文为weixin_45264992原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。