【每天5分钟,了解一个知识点】
在数据库的使用过程中,SQL 执行慢是一个常见的问题。下面我们将分别针对 SQL 偶尔很慢和一直很慢的情况进行原因分析。
一、SQL 偶尔很慢的情况
(一)原因分析
数据库在刷新脏页
当向数据库插入或更新数据时,数据库会在内存中更新对应字段的数据,但这些更新不会立即同步持久化到磁盘,而是先写入 redo log 日志。
如果数据库一直很忙,更新频繁,redo log 很快会被写满。此时,数据库不能等到空闲时再将数据同步到磁盘,只能暂停其他操作,全力将数据同步到磁盘,这就可能导致正常的 SQL 语句突然执行得很慢。
拿不到锁
执行的 SQL 语句涉及的表被其他用户加锁,或者表中要使用的某一行被加锁,都会导致拿不到锁而只能等待别人释放锁,从而使 SQL 执行变慢。
二、SQL 一直很慢的情况
原因分析
没用到索引
如果 SQL 查询没有使用到索引,数据库需要全表扫描来查找数据,这会导致查询速度非常慢。
字段有索引,但由于没有合理使用,导致没有用索引
例如索引字段加了运算符、索引加了函数等情况,都会使数据库无法使用索引进行查询,从而导致查询速度变慢。
数据量过大
当表中的数据量非常大时,即使有索引,查询也可能会变慢。这是因为数据库需要处理更多的数据。
可以考虑对数据进行分区、分表等操作,以减少单个表中的数据量。
查询语句不合理
复杂的查询语句、过多的关联表、不必要的子查询等都可能导致查询变慢。
尽量简化查询语句,避免使用过多的关联和子查询。如果确实需要复杂的查询,可以考虑多次查询,由程序处理。
【关联阅读】
关注公众号,回复【Java面试】,获取更多面试资料
文章转载自架构经纬,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




