担心被骂,本不想写这篇文章。犹豫良久,最终还是决定写。希望能够帮助到一些朋友,认识到数据库索引正确设计的重要性。
6 U" N- y1 `, {$ R. j9 I$ _9 V4 K; b% }0 j+ l- ]
由于我比较懒,就简单用文字描述一下,就懒得切图片证明了,懂技术的朋友可以自己测试一下,可证实我的测试结果是否真实。不懂技术的朋友信不信也无妨。1 M5 j8 H! O$ w6 l& l2 v
' t9 w/ H) y5 f2 i
测试程序: & d* P" A3 G4 \# M6 @
030ci.mmafn.com 248bk.mmg2g.net 774ke.mobilew.net 082pp.mobilew.net 748fm.mobo6.com 280or.mokezi.com 732pb.mrdxm.com 606tq.mrpao.com 735tg.mrpao.com 570ct.msd0755.com* c4 n0 @# {: N7 {& G: R
CMS程序:帝国cms dedecms phpcms2 i- @) ]4 e) l D; U: z
! m6 @! t. n2 m. ?
论坛程序:discuz phpwind xiuno* z( t; S6 ] L" `! X
) J2 u- W" ?6 D, d5 [: p5 J4 Q
负载测试结果:/ x$ k, A. `9 M) P3 u0 o& E
- l) F- @' [+ z: c9 hxiuno > discuz > phpwind > phpcms > ( 帝国cms ? dedecms)
- ^8 u% b/ o% t) V# C/ m# p6 w8 N2 H e! o7 W
从数据库设计来看(个人观点):
+ y G5 D& s, m0 G$ q7 e+ \6 o; H0 U, l+ o. J
xiuno > (discuz 、 phpwind 、 phpcms) > (帝国cms 、 dedecms)
6 B9 b$ `% G2 N1 I K' x" B3 i V! N) v G
dedecms和帝国cms都是老牌的CMS了,从的数据库设计来看,不知是数据库设计者完全没有理解mysql索引的真谛,还是留一手以对高负载需求的用户收费改进?(希望不懂技术的朋友不要喷我,真正懂mysql索引的朋友可以自己看一下他们对索引的设计,虽然对于dedecms和帝国cms的作者来说,我只是一个晚辈,像您们这样有10多年开发经验的人,我比较尊敬,但我建议当前的dedecms和帝国cms数据库设计者还是再研究一下mysql索引吧,可以不相信我,但可以花点时间看看discuz 、phpwind的数据库设计吧,确实是比您们的好)。
' F" _3 v# a1 o3 e) U- a- e0 S" S! U/ l
如果有幸帝国cms作者能看到此文,希望您再重新设计帝国cms架构吧,毕竟这些年您一直在改进帝国cms的负载能力,光是通过分表技术提升,没有真正用到索引来优化,真的不行的,如果用对了索引,性能还会有更大的提升。' r: q# S' Q6 B3 x* m
; ?( I7 s3 r- d; k9 }dedecms的创始人我算是和他认识,但现在dedecms却不是他的,比较遗憾,现在的dedecms这几年确实没多大变化,一直在打补丁,这样下去真是比较悲剧。1 {" Y W, n- `
3 c0 c F2 ]6 ?. V4 V1 n; Z% k
我的测试环境:6 ^ y9 W( r% D; @2 s* A
0 r9 t5 `/ T, B, ^" t" ti3CPU 4G内存 1T硬盘 win7系统 apache 2.2 + mysql 5.0(普通环境没有优化过)
4 n' y( F i1 K" q" z$ v1 j1 s, b! {8 m) F
测试方法:+ b3 O% O/ d9 ^. |% C0 ]; X3 L
! B+ h9 X. V0 q4 e: {
导入100万至1亿 不等数据,进行简单的访问测试& n' J ~( q6 C2 p0 Y* N
3 S% a1 V6 `+ U1 e
我的导入方法:; w% \; J6 g4 W# d4 o
; H* u+ g1 L$ }" K, D0 f
根据各个程序的数据结构写出导入程序,
7 ~# W2 O# M! O! H+ V# Q7 Y# ?, J6 E
1.先写一个PHP程序,将数据写入 e:/insert1.sql 这个文件,
9 u9 G- i+ ]" d, q
% i9 U* @' t4 Q0 x( m2.然后再通过 LOAD DATA local INFILE 'e:/insert1.sql' INTO TABLE `数据表名` character set 编码; 这种方式导入的,导入千W数据也就几分钟。9 S, g" R, i% J- @% c; @
2 u) r$ m! z) a8 y8 [
1、帝国cms" Q6 X# Q- W6 \5 R' V
0 H! Y& u3 _4 F! M
测试版本:EmpireCMS_7.0_SC_GBK (当前官方最新版)6 l9 u* _0 C# {' L9 y
6 \5 l+ V- v2 g
先说说帝国cms,官方有一篇大数据测试贴(2千万数据、17.3GB数据库下帝国CMS超强生成速度 ),当年我看到这篇测试贴时,也觉得负载非常强大,但我测试后,令我失望了。
, r- o: \ G+ B# j
2 L: L' o+ g B! E1 p安装默认测试数据(共33篇新闻测试数据),首页改为动态首页 第一次访问0.670127010345459 第二次访问0.07926607131958* L7 B2 k& {( a% t3 V! I# z6 ?1 \
" k2 u2 c. ~& `) S6 M9 X
|