手机扫码接着看

Drupal网站中批量设置Views替换Taxonomy Term分类页面

作者:我爱技术网|分类:系统运维|标签:drupal

最近发现有一台阿里云RDS数据库服务器负载持续很高,CPU总是占满,当前连接数超过几十的时候网站就被卡得不能动了。除了升级RDS配置以外,可以仔细检查慢查询日志,发现这种查询特别多:

SELECT node.title AS node_title, node.nid AS nid, node.sticky AS node_sticky, node.created AS node_created 
FROM node node 
WHERE (( (node.status = 1 OR (node.uid = 0 AND 0 <> 0 AND 0 = 1) OR 0 = 1) AND (node.nid IN (SELECT tn.nid AS nid FROM taxonomy_index tn WHERE ( (tn.tid = '168') ))) )) 
ORDER BY node_sticky DESC, node_created DESC 
LIMIT 11 
OFFSET 2600

  这显然是一个Drupal网站的分类页面,翻页到后面产生的MySQL查询语句。执行的时间在2-4秒左右。

  但其实分类页面的排序不重要,而且页面状态、当前用户也基本上是统一的、无需判断的,所以简化以上查询语句成这样:

SELECT node.title AS node_title, node.nid AS nid, node.language AS node_language 
FROM node node 
WHERE (( (node.nid IN (SELECT tn.nid AS nid FROM taxonomy_index tn WHERE ( (tn.tid = '168') ))) )) 
LIMIT 11 
OFFSET 2600

  执行的时间大约几十-几百ms,下降了1、2个数量级,所以这样的优化是很有效果的。

  查到我以前就写过几篇类似博客《Drupal中启用Views来替代原生的分类页面》、《替换Views翻页功能来降低Drupal网站数据库负载》、《用Devel模块排查Drupal速度慢等性能问题》。

  于是设置一个站的Views如下:

Drupal网站中批量设置Views替换Taxonomy Term分类页面  drupal 第1张

  其中红框是改动了一些的地方,将这样设置的Views导出、复制到自定义模块的.views_default.inc文件中,并使用drush cc all批量清理系列站的缓存,就可以把这个Views应用到各个网站中。

文章来源:https://jamesqi.com/%E5%8D%9A%E5%AE%A2/Drupal%E7%BD%91%E7%AB%99%E4%B8%AD%E6%89%B9%E9%87%8F%E8%AE%BE%E7%BD%AEViews%E6%9B%BF%E6%8D%A2Taxonomy_Term%E5%88%86%E7%B1%BB%E9%A1%B5%E9%9D%A2

24 07月

2019-07-24 00:46:37

浏览5056 评论0
返回
目录
返回
首页
中国世界500强数量首超美国,但别高兴得太早 百度推出爱番番CRM开放平台