MediaWiki网站简化模板,减小MySQL数据库

来自Jamesqi
跳转至: 导航搜索

--James Qi 2010年2月26日 (五) 10:36 (CST)

  前些天向邮编库网站中导入了170万条数据,这个数量是原超过以前最多的IP树的38万条数据的,导入的速度比IP树要快,大约用了5天的时间,而IP树我记得是用了一个多月的时间,这主要与页面的内容复杂程度有关,越复杂需要处理的时间越长。

  170万条数据导入完成后,数据库从几百万条记录、2G大小变成了几千万条记录、15G大小,好在搜索引擎爬虫还没有开始光临,否则怕是MySQL服务器又吃不消。为什么170万条数据会出现6000多万条记录呢?用phpMyAdmin看了一下:

记录数 类型 整理 大小
jinglearchive ~12,056 InnoDB utf8_general_ci 3.5 MB
jinglecategory ~63,237 InnoDB utf8_general_ci 8.2 MB
jinglecategorylinks ~13,184,169 InnoDB utf8_general_ci 3.6 GB
jinglechange_tag ~0 InnoDB utf8_general_ci 80.0 KB
jingleexternallinks ~3,576,385 InnoDB utf8_general_ci 3.2 GB
jinglefilearchive ~0 InnoDB utf8_general_ci 80.0 KB
jinglehitcounter 0 MEMORY utf8_general_ci 0 字节
jingleimage ~261 InnoDB utf8_general_ci 128.0 KB
jingleimagelinks ~1,801 InnoDB utf8_general_ci 192.0 KB
jingleinterwiki ~195 InnoDB utf8_general_ci 64.0 KB
jingleipblocks ~6 InnoDB utf8_general_ci 96.0 KB
jinglejob ~0 InnoDB utf8_general_ci 32.0 KB
jinglelanglinks ~3,514,817 InnoDB utf8_general_ci 660.8 MB
jinglelogging ~21,012 InnoDB utf8_general_ci 7.6 MB
jinglemath ~0 InnoDB utf8_general_ci 16.0 KB
jingleobjectcache ~208,446 InnoDB utf8_general_ci 2.0 GB
jingleoldimage ~8 InnoDB utf8_general_ci 80.0 KB
jinglepage ~1,756,126 InnoDB utf8_general_ci 477.5 MB
jinglepagelinks ~17,490,561 InnoDB utf8_general_ci 1.2 GB
jinglepage_props ~0 InnoDB utf8_general_ci 16.0 KB
jinglepage_restrictions ~164 InnoDB utf8_general_ci 96.0 KB
jingleprotected_titles ~0 InnoDB utf8_general_ci 32.0 KB
jinglequerycache ~0 InnoDB utf8_general_ci 32.0 KB
jinglequerycachetwo ~0 InnoDB utf8_general_ci 64.0 KB
jinglequerycache_info ~0 InnoDB utf8_general_ci 16.0 KB
jinglerecentchanges ~13,510 InnoDB utf8_general_ci 6.2 MB
jingleredirect ~225 InnoDB utf8_general_ci 32.0 KB
jinglerevision ~1,875,145 InnoDB utf8_general_ci 440.0 MB
jinglesearchindex 10,509 MyISAM utf8_general_ci 3.2 MB
jinglesite_stats ~1 InnoDB utf8_general_ci 16.0 KB
jingletag_summary ~0 InnoDB utf8_general_ci 64.0 KB
jingletemplatelinks ~21,169,521 InnoDB utf8_general_ci 3.3 GB
jingletext ~2,327,131 InnoDB utf8_general_ci 446.8 MB
jingletrackbacks ~0 InnoDB utf8_general_ci 32.0 KB
jingletranscache ~134 InnoDB utf8_general_ci 1.5 MB
jingleupdatelog ~2 InnoDB utf8_general_ci 16.0 KB
jingleuser ~3 InnoDB utf8_general_ci 48.0 KB
jingleuser_groups ~6 InnoDB utf8_general_ci 32.0 KB
jingleuser_newtalk ~2 InnoDB utf8_general_ci 48.0 KB
jinglevalid_tag ~0 InnoDB utf8_general_ci 16.0 KB
jinglewatchlist ~6 InnoDB utf8_general_ci 32.0 KB
41 个表 总计 ~65,225,439 MyISAM latin1_swedish_ci 15.2 GB

  可以看出categorylinks、externallinks、langlinks、templatelinks这几个表的数量都是170万的好多倍,再查看170万条数据调用的模板,正是这个模板内有过多的分类、外部链接、语言链接、嵌套模板引起的!于是对该模板进行了简化,首先是不再调用多层模板,将需要调用的内容全部集中在这一个模板中,然后尽量简化不必要的分类、外部链接和语言链接,文字、结构、图片上也优化,再保存新的模板,经过较长时间(又是运行runJobs.php几天)的更新,现在总计记录数下降了一半,在3000万条左右,数据库缩小到12G左右。应该还有简化、压缩的空间,以后再尝试。

  以前在做MediaWiki网站的时候不太注意这个数据库大小的问题,为了分类全、链接多、修改方便采用了多级嵌套的模板,有用无用的分类都多加,内部、外部链接也尽量多加。这对于数据量小、浏览量小的网站(一般都是人工来添加、编辑内容的网站)来说问题不大,多浪费一点数据库空间、磁盘空间、服务器CPU/MEM资源、网络带宽也无所谓。而对于用importDump来批量导入大量数据的网站来说,如果不优化处理,就可能造成服务器资源不足的情况。

  压缩MySQL数据库还有一个办法,就是启用Manual:$wgCompressRevisions功能,让MySQL中新保存的数据都用压缩方式,对于已经存在的老数据还可以用CompressOld.php来压缩处理。这应该也可以大幅缩小MySQL的磁盘空间占用,不过不能减少记录数,压缩、解压对CPU的消耗有点增加,这个功能我还没有实际用过。(补充:刚刚试了一下CompressOld.php,无论用默认的-t concat还是全部压缩的-t gzip,数据库的大小变化都很小,几乎看不出来效果。--James Qi 2010年2月26日 (五) 14:18 (CST))

  在当前服务器CPU越来越强大、内存越来越便宜、磁盘越来越大的情况下,一般的MediaWiki网站也不需要太多考虑,还是重点放在内容提供、功能实现上,只是在数据量特别大、浏览量特别大的情况下需要注意这些模板简化之类的问题。

标签:MediaWiki网站模板MySQL数据库
相关内容:
  1. 2010-11-10 22:20:28 MediaWiki-1.15升级到1.16.0步骤
  2. 2010-11-04 22:52:58 开启MediaWiki的搜索建议(Search Suggest)功能
  3. 2010-11-03 11:26:02 MediaWiki-1.15.0升级到1.16.0中出现的问题
  4. 2010-11-02 23:52:05 MediaWiki-1.15准备升级到1.16
  5. 2010-10-22 22:29:00 想写一本关于MediaWiki的书,有人需要吗?
  6. 2010-10-12 22:59:59 全面更新名录集网站模板
  7. 2010-09-20 11:33:29 直接操作MediaWiki的MySQL数据库
  8. 2010-09-04 00:20:09 修改模板对付MediaWiki及扩展程序的Bug
  9. 2010-08-31 00:47:49 分割大容量MediaWiki数据库
  10. 2010-07-21 18:02:11 外文网站做AdSense广告实践
  11. 2010-07-12 00:02:44 网站被墙后域名跳转需要在国内外同时进行
  12. 2010-07-08 23:08:13 用HTML和站间链接减小MediaWiki数据库记录
  13. 2010-07-02 16:56:03 网站周游地球一圈后自残回家
  14. 2010-07-02 15:57:23 龙人寻人网超过预期,继续改进
  15. 2010-06-19 00:52:24 山外有山,人外有人,站外有站

关于“MediaWiki网站简化模板,减小MySQL数据库”的留言:

目前暂无留言

新增相关留言