华为云小白第二十课:文章越写越多,数据库变慢了怎么办
写了几百篇文章之后,打开首页越来越慢,翻页要等,搜一篇文章也要等半天。服务器配置没变,带宽也没跑满,问题往往不在服务器,在数据库——博客的账本太厚了。
数据库是什么
你可以把数据库理解成博客的账本:文章、评论、设置,全都记在表里。文章少的时候,查一次翻几页就找到;文章多了、评论多了,每次查询要翻的账页就多,速度自然就慢下来。再加上 WordPress 每改一次文章就存一个修订版,草稿、回收站、垃圾评论越攒越多,账本只会越来越厚。
先分清慢在哪
第十二课的思路先用上:慢的是打开文章,还是只慢在后台、搜索?打开文章慢,先看缓存(第十九课)有没有顶上去;后台写文章、搜东西慢,那才是数据库在吃力。别一上来就升配置,先看监控(第七课)里数据库的 CPU 和慢查询,确认瓶颈真是它。
第一步:先清理,别急着加东西
- 删文章修订版:改十次就存十个版本,留最新的一份就够了。
- 清回收站和垃圾评论:删掉的文章、拦下的垃圾评论,定期清干净。
- 清过期数据:插件留下的临时数据(瞬态数据)过期了也不自动走,得手动清。
宝塔和清理插件里都有这些入口,点几下就行。动手之前先按第六课的规矩拍一张快照——动数据库之前不备份,是大忌。
第二步:给账本加目录,定期整理
数据库有个东西叫索引,就是账本的目录:常查的字段加上索引,查询不用一页页翻,直接翻目录。还有个叫“优化表”的操作,相当于把账本里散掉的碎片页重新钉好,定期做一次就行。这两步都不用懂 SQL,宝塔的数据库管理里点一点就能做。
第三步:缓存顶上去,少查库
第十九课讲过页面缓存:同一篇文章,第一次生成后存一份,后面的人直接看缓存,不用每次都查库。再进一步可以开对象缓存,把常查的数据放内存里,查一次比翻账本快得多。缓存挡的是重复访问,写文章、搜东西还是要查库,所以清理和索引那两步不能省。
第四步:真到瓶颈,再分家
清理、索引、缓存都做了还是慢,才考虑把数据库和网站分开:数据库单独放一台服务器,或者用云数据库(RDS),各忙各的,互不抢资源。这一步花钱最多,所以先确认瓶颈真是数据库,别闭着眼睛升。
最容易踩的坑
- 不备份就动数据库:删表、清数据之前没快照,删错了没有后悔药。
- 乱装优化插件:几个优化插件叠着用,互相打架,越优化越慢;留一个顺手的就够了。
- 把缓存当万能:缓存只挡重复访问,后台和搜索照样查库,账本厚的问题它治不了根。
- 只看文章数:几百篇文章本身不大,慢往往是修订版、垃圾评论和插件留下的垃圾数据,先清这些。
- 点赞
- 收藏
- 关注作者
评论(0)