mediawiki修改用mysql数据库_MediaWiki网站简化模板,减小MySQL数据库

博主发现170万条数据导入后,MySQL数据库膨胀至15GB,通过分析发现categorylinks等表数量过大。通过简化模板、减少嵌套、分类和链接,更新模板后数据库记录数减半,降至12GB。建议在数据量大时关注模板简化以减轻服务器负担。
摘要由CSDN通过智能技术生成

导航:

--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数据库”的留言:

目前暂无留言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值