全国诚招各地市合作,提供完成项目运营资料 电话:18638624151
技术博客

数据库慢查询,八成是这几个原因

技术博客
数据库慢查询,八成是这几个原因

系统变慢,第一反应常是服务器不行了。但十次里有七八次,问题出在数据库的查询上。这次讲怎么排查。碰面时他问起,数据库优化做了到底有没有用。我的判断是,先看这件事有没有人反对。

先看是不是缺索引

最常见的原因是查询的字段没有索引。数据量小的时候看不出来,上万条以后就开始明显变慢。

判断的办法是看查询条件用到了哪些字段,再去检查这些字段有没有索引。没有的,加上试试,往往立竿见影。

但索引也不是越多越好。加多了会影响写入速度,按实际查询来加,别一股脑全加上。

再看查询是不是写太宽

有的查询一取就是整张表。用不上的字段也拉出来,白白增加了负担。

只取需要的字段,只查需要的数据,这是最基本的一条。写的时候图省事用全字段,后面就要还这笔账。

还有一种是一次查太多行。列表页要分页,别一次把几万条都取出来再在程序里切。

还要看数据量涨了没

系统刚上线很快,用了一年变慢,这很正常。数据量涨了,原来的写法可能就不够用了。

这时候要么优化查询,要么把历史数据归档。老数据不常查,挪出去能明显减轻负担。

我们的习惯是定期看一眼数据库的增长速度,提前做规划,别等到卡得用不了才动手。

什么时候该考虑拆分

数据量涨到一定程度,光靠优化查询就不够了,得考虑拆分。

拆的方式有好几种,按时间拆、按业务拆,选哪种看查询的规律。大多数查询都带时间范围,按时间拆更顺。

拆分别一步到位。先把最老的那部分数据分出去,观察一段时间再往下走,比一次改彻底安全。

拆之前一定先备份,并且想好怎么查历史数据。分出去的数据还是要能查到,不能有了新库就丢了老数据。

还有一点是别为了拆而拆。数据量不大、优化一下就能解决的,没必要上分布式,复杂度也是一种成本。

做数据库优化,这几个问题绕不开

加了索引还是慢怎么办

看索引有没有生效、查询语句是不是用不上它。有时写法不对,索引等于白加。

要不要换更好的服务器

先排查查询。查询问题不解决,加服务器也只是拖时间,治标不治本。

多久要优化一次

不用定期做,但数据量明显增长时,或者发现变慢时,就该查一遍。

常斌的观点可能有点硬:先看慢查询日志,再动手,不凭感觉猜。

先看日志

我的建议是先把慢查询日志打开,看哪些语句花的时间最长。花时间最多的那一两条,就是优化的重点。

我们手上交出去的那 300 多个小程序,不少还在稳定跑着。信服无限经手运维时,会把数据库健康检查当成常规项。换系统之前,告诉我你的系统大概什么量级。

聊聊你的项目

有架构或成本优化的烦恼?

把你的业务场景告诉我们,专家会给出一份务实的改造与降本建议。


电话咨询 微信咨询 在线咨询 返回顶部
xycx202108

微信扫码咨询

×