当前位置

替换Views翻页功能来降低Drupal网站数据库负载

James Qi 在 2017年11月2日 - 16:01 提交
内容摘要:Drupal的Views是个非常强大、灵活的工具,但用得不合适也可能导致数据库负载的飙升。最近把Drupal站启用UTF8MB4支持,转换程序自动把以前的MyISAM引擎转为InnoDB了,也因此引起......

  Drupal的Views是个非常强大、灵活的工具,但用得不合适也可能导致数据库负载的飙升。最近把Drupal站启用UTF8MB4支持,转换程序自动把以前的MyISAM引擎转为InnoDB了,也因此引起阿里云RDS的IOPS升高。

  又试了一些调整RDS参数等,无效。再看了一些资料、观察了RDS的进程,还是一些Views的消耗大,特别是数据量大的站。以前在Drupal 6时就在个别网站中启用过views_litepager这个插件,来替换Views本身的翻页,牺牲了查看一共有多少页的功能,不再运行select count(*) ... 这个在InnoDB引擎消耗很大的数据统计,换来性能上的提升。

  今天再次在一些Drupal 7站上实施了这个模块,不过发现设置有缓存的views翻页出现问题,类似别人的问题帖子:《Going back to "Page 1" displays "Page 0" in pager》,使用其中说到的补丁可以解决。

  再观察看看,有效、没有其它问题的话,再实施到更多站点上去。


   2017年11月6日补充:从MySQL的表现数据来看,views不显示页面总数后对降低IOPS确实有明显效果。已经在多个系列网站中实施,有几点注意:

  • 对于数据量太少的网站(例如页面总数在几千、几万以下)或者数据量太小的Views(例如Taxonomy Term的分类页)来说,实施的意义不大,可以不变,有些网站总页面node数量大,但没有node的views,只有分类页的views,也可以不实施;
  • 对于数据量较大的网站(例如页面数量在数万、数十万以上),而且有node做成的views的情况下,就有必要启用views_litepager模块并修改views中的翻页设置为litepager;
  • 使用了自定义模块的网站,可以直接修改default views文件,将pager的数据从full改为lite,然后批量清理缓存;
  • 多语言翻译中需要人工来增加Page 1和Page @count的对应翻译,以免当前页都是显示英语页数。

自由标签:

添加新评论

Plain text

  • 不允许使用HTML标签。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。
验证码
本问题用于测试您是否为人类访问者,避免自动垃圾发贴。
图形验证
键入显示在图片中的字符