当前位置

Drupal的MySQL过度膨胀,清理缓存、翻译表

James Qi 在 2012年10月16日 - 16:59 提交
内容摘要:我们做的Drupal网站多是数据查询、展示类型的,当数据量大的时候,导入就需要很长时间,而随着站点的建立、访问,还会产生一些日志、缓存等数据,一些站点的MySQL数据库占用空间会越来越大,部分甚至都超......

  我们做的Drupal网站多是数据查询、展示类型的,当数据量大的时候,导入就需要很长时间,而随着站点的建立、访问,还会产生一些日志、缓存等数据,一些站点的MySQL数据库占用空间会越来越大,部分甚至都超过10G了,导致访问很慢、备份困难。

  虽然说Drupal的Cron可以做一些清理的工作,但实际上有些数据表还是清理不了,这几天我就人工删除了一些数据表,例如BoostCache相关的表、Cache相关的表。

  另外有些非英文站的locales_source表也极大,我打开这个表发现很多重复的、Views页面整个都成了翻译的source,而locales_target表中并没有对应的翻译文本。我就先把这些Views页面产生的数据项全部删除了 DELETE FROM locales_source WHERE location LIKE '%/postcode/%' OR location LIKE '%/area/%' ,不过随着再次访问,又会出现新的,还没有完全解决。


  2013年2月19日补充:*.chn.youbianku.com系列网站再次出现服务器负载高的情况,数据库中locales_source表达到数G至上十G,先还是采取上述办法删除,以后再想法彻底解决。

  2月21日继续查资料依然没有找到很好的解决办法,就先做了一个drush命令,对几个非英文站都定时每天执行一次删除操作,暂时就不会出现数据库过大、服务器负载过高的问题。

drush sql-query "DELETE FROM locales_source WHERE location LIKE '%/postcode/%' OR location LIKE '%/area/%'";

drush sql-query "OPTIMIZE TABLE locales_source";

  2013年3月8日补充:上面的问题已经可以彻底解决,情况博文《Drupal多语言网站中MySQL数据库locales_source表过大的问题》。


  2016年8月16日补充:再删除locales_target中lid字段在locales_source中已经删除的记录,可以进一步加快sql命令的执行速度,语句:

delete from locales_target where lid not in(select lid from locales_source);

添加新评论

Plain text

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