当前位置

提升MySQL性能的一些办法

James Qi 在 2019年12月14日 - 22:00 提交

  最近老是有一台阿里云的RDS数据库服务器有偶然主备切换的情况,网站也有偶尔很慢的情况,总体这台RDS的负载很轻,就是不知道偶尔有什么SQL语句触发了问题,这些天和同事一起排查、测试,把一些办法记录下来:

  • Drupal站的Views是检查重点,检测办法还是以开启Devel插件为主,寻找慢查询语句,找到对应Views来改进;
  • 在Views中使用Views PHP字段,发现会让Litepager失效,还有查询的Limit消失,改用views-view-field--field_name.tpl.php可以解决;
  • Views高级设置里面的Debug签名在测试完成后的生产网站上需要关掉,避免引起(包含聚合的Views)性能大幅下降;
  • Views里面调用Views Block再调用其它Views Block,甚至更多嵌套调用、更多并行调用,都要尽量简化;
  • 在RDS的慢查询日志中看到有返回几百万行的查询语句,是自己写的生成sitemap.xml文件的程序引起的,改为第一次用专门的COUNT语句来计算总数,而不是SELECT返回全部内容再在PHP里面计数;
  • 使用GROUP BY语句来替代DISTINCT语句,对分类页面、列表页面的网站地图提升sitemap.php的效率;
  • 为大数据量的网站采用人工写COUNT和SELECT语句的办法单独生成sitemap;
  • 对爬虫过多的网站进行了一些反爬措施或者爬取速度限制。

  使用了很多种办法,应该有一些效果,但是否完全解决了还有待观察。

 

自由标签:

添加新评论

Plain text

  • 不允许使用HTML标签。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。