mysql联合索引排序_MySQL联合索引让Drupal网站带排序的索引页面速度飞快

这段时间我们有个网站不断更新内容,流量在不断增长的同时,也引来了大量采集者,现在的采集者已经非常专业了,IP池不断更换,User Agent也随机变化,甚至Referer也做了不同的伪装,让我们花了很多时间来分析Apache日志,不断修改屏蔽条件,斗智斗勇。先以为是百度爬虫太快,把百度爬虫进行了专门的临时503处理,360爬虫干脆全部屏蔽了,但发现还是不行,非正规搜索引擎的采集者带来的麻烦依然不断。🤔

为了不影响用户访问,下血本把阿里云服务器从8核16G升级为16核32G,基本可以解决ECS负载飙升的问题,但RDS数据库服务器还是会遇到查询语句堆积的情况,我们查看是某种索引条件下的查询语句,进一步查看Drupal网站中对应的Views设置,把输出结果进行了一些简化不过还是没解决,MySQL语句已经很简单了,就是根据city索引,然后对date进行排序:

SELECT name AS name, date AS date FROM {table} table WHERE (( (city = 'XXX') )) ORDER BY date DESC LIMIT 16 OFFSET 0

在RDS不忙的情况下也需要50ms,检查date、city都有索引,后来想到可能需要联合索引(忘记用explain查看了,本来可以更快定位问题所在) ,然后添加了联合索引,删除了原来单独的两个索引,再看查询速度就非常快,只要1-2ms左右了。👍

我们很多个子网站批量生成了联合索引,花了几个小时时间,然后昨晚到今天再也没有发现ecs/rds被卡住的情况了,从根本上解决了MySQL查询遇到的瓶颈。👌

我们其它Drupal网站肯定也有类似问题,因为流量不大、采集不多、数据量不大,没有呈现出来,以后还要再专门检查、必要时添加联合索引。✌

对于有相当流量的网站来说,保证网站的可访问性、提高浏览速度就可以带来更多流量和收入!😀

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值