希望能夠幫助到一些朋友,認(rèn)識(shí)到數(shù)據(jù)庫(kù)索引正確設(shè)計(jì)的重要性。
由于我比較懶,就簡(jiǎn)單用文字描述一下,就懶得切圖片證明了,懂技術(shù)的朋友可以自己測(cè)試一下,可證實(shí)我的測(cè)試結(jié)果是否真實(shí)。不懂技術(shù)的朋友信不信也無(wú)妨。
測(cè)試程序:
CMS程序:帝國(guó)cms dedecms phpcms
論壇程序:discuz phpwind xiuno
負(fù)載測(cè)試結(jié)果:
xiuno > discuz > phpwind > phpcms > ( 帝國(guó)cms ? dedecms)
從數(shù)據(jù)庫(kù)設(shè)計(jì)來(lái)看(個(gè)人觀點(diǎn)):
xiuno > (discuz 、 phpwind 、 phpcms) > (帝國(guó)cms 、 dedecms)
dedecms和帝國(guó)cms都是老牌的CMS了,從的數(shù)據(jù)庫(kù)設(shè)計(jì)來(lái)看,不知是數(shù)據(jù)庫(kù)設(shè)計(jì)者完全沒(méi)有理解mysql索引的真諦,還是留一手以對(duì)高負(fù)載需求的用戶收費(fèi)改進(jìn)?(希望不懂技術(shù)的朋友不要噴我,真正懂mysql索引的朋友可以自己看一下他們對(duì)索引的設(shè)計(jì),雖然對(duì)于dedecms和帝國(guó)cms的作者來(lái)說(shuō),我只是一個(gè)晚輩,像您們這樣有10多年開(kāi)發(fā)經(jīng)驗(yàn)的人,我比較尊敬,但我建議當(dāng)前的dedecms和帝國(guó)cms數(shù)據(jù)庫(kù)設(shè)計(jì)者還是再研究一下mysql索引吧,可以不相信我,但可以花點(diǎn)時(shí)間看看discuz 、phpwind的數(shù)據(jù)庫(kù)設(shè)計(jì)吧,確實(shí)是比您們的好)。
如果有幸帝國(guó)cms作者能看到此文,希望您再重新設(shè)計(jì)帝國(guó)cms架構(gòu)吧,畢竟這些年您一直在改進(jìn)帝國(guó)cms的負(fù)載能力,光是通過(guò)分表技術(shù)提升,沒(méi)有真正用到索引來(lái)優(yōu)化,真的不行的,如果用對(duì)了索引,性能還會(huì)有更大的提升。
dedecms的創(chuàng)始人我算是和他認(rèn)識(shí),但現(xiàn)在dedecms卻不是他的,比較遺憾,現(xiàn)在的dedecms這幾年確實(shí)沒(méi)多大變化,一直在打補(bǔ)丁,這樣下去真是比較悲劇。
我的測(cè)試環(huán)境:
i3CPU 4G內(nèi)存 1T硬盤 win7系統(tǒng) apache 2.2 + mysql 5.0(普通環(huán)境沒(méi)有優(yōu)化過(guò))
測(cè)試方法:
導(dǎo)入100萬(wàn)至1億 不等數(shù)據(jù),進(jìn)行簡(jiǎn)單的訪問(wèn)測(cè)試
我的導(dǎo)入方法:
根據(jù)各個(gè)程序的數(shù)據(jù)結(jié)構(gòu)寫出導(dǎo)入程序,
1.先寫一個(gè)PHP程序,將數(shù)據(jù)寫入 e:/insert1.sql 這個(gè)文件,
2.然后再通過(guò) LOAD DATA local INFILE 'e:/insert1.sql' INTO TABLE `數(shù)據(jù)表名` character set 編碼; 這種方式導(dǎo)入的,導(dǎo)入千W數(shù)據(jù)也就幾分鐘。
1、帝國(guó)cms
測(cè)試版本:EmpireCMS_7.0_SC_GBK (當(dāng)前官方最新版)
先說(shuō)說(shuō)帝國(guó)cms,官方有一篇大數(shù)據(jù)測(cè)試貼(2千萬(wàn)數(shù)據(jù)、17.3GB數(shù)據(jù)庫(kù)下帝國(guó)CMS超強(qiáng)生成速度 ),當(dāng)年我看到這篇測(cè)試貼時(shí),也覺(jué)得負(fù)載非常強(qiáng)大,但我測(cè)試后,令我失望了。
安裝默認(rèn)測(cè)試數(shù)據(jù)(共33篇新聞測(cè)試數(shù)據(jù)),首頁(yè)改為動(dòng)態(tài)首頁(yè) 第一次訪問(wèn)0.670127010345459 第二次訪問(wèn)0.07926607131958
我導(dǎo)入100W數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)大小3.6G,首頁(yè)第一次訪問(wèn)182秒,第二次訪問(wèn)155秒,我不知道當(dāng)時(shí)帝國(guó)cms作者測(cè)試時(shí),是否有測(cè)試過(guò)動(dòng)態(tài)訪問(wèn)首頁(yè)的時(shí)間。包括從6.0版起,每次更新都有說(shuō)提升性能,但為何會(huì)這樣?
帝國(guó)CMS官方的測(cè)試帖,就是誤導(dǎo)人,忽悠人。
問(wèn)題1.測(cè)試數(shù)據(jù)并沒(méi)有提到動(dòng)態(tài)訪問(wèn)首頁(yè)或是生成首頁(yè)。也沒(méi)有提到動(dòng)態(tài)訪問(wèn)列表頁(yè),和生成列表頁(yè)。
問(wèn)題2.測(cè)試統(tǒng)計(jì)的時(shí)間,也只統(tǒng)計(jì)了連接數(shù)據(jù)庫(kù)之后的執(zhí)行時(shí)間,并沒(méi)有加上連接數(shù)據(jù)庫(kù)的時(shí)間,這樣很容易誤導(dǎo)很多人,拿這個(gè)時(shí)間和別人統(tǒng)計(jì)了連接數(shù)據(jù)庫(kù)的時(shí)間比。這樣就差別大了。
問(wèn)題3.每篇新聞的內(nèi)容很少也就幾行字。同時(shí)內(nèi)容頁(yè)模板,也非常簡(jiǎn)單,生成出來(lái)的文件也非常小,只有3K。正常的文章,都是上10K至幾十K。
問(wèn)題4.同時(shí)因?yàn)閜home_ecms_news表 id 為主鍵,讀取內(nèi)容時(shí),都是走的索引,所以動(dòng)態(tài)訪問(wèn)內(nèi)容頁(yè),編輯內(nèi)容,生成內(nèi)容頁(yè)很快,都是理所當(dāng)然的。
問(wèn)題5.測(cè)試時(shí)都是通過(guò)分表來(lái)測(cè)試的,在真實(shí)站長(zhǎng)做網(wǎng)站,不可能一開(kāi)始就把網(wǎng)站內(nèi)容分表。所以這和真實(shí)做站情況完全不一樣。
像官方這種測(cè)試貼,真是誤導(dǎo)人,而且還掛了幾年。對(duì)于不懂技術(shù)的人,就是一種誤導(dǎo),讓普通用戶盲目的崇拜。
2、dedecms
測(cè)試版本:DedeCMS V5.7 SP1_GBK正式版 (當(dāng)前官方最新版)
織夢(mèng)CMS在知度CMS中一直公認(rèn)的負(fù)載性能最差的CMS,確實(shí)很差。
我導(dǎo)入100W數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)大小只有330M,首頁(yè)訪問(wèn)已經(jīng)需要70幾秒-80幾秒才能訪問(wèn)。
3、phpcms
測(cè)試版本:PHPCMS V9_GBK 正式版 (當(dāng)前官方最新版)
PHPCMS現(xiàn)在是由新的團(tuán)隊(duì)重新開(kāi)發(fā),也是號(hào)稱高負(fù)載。
我導(dǎo)入100W數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)大小3G,首頁(yè)訪問(wèn)需要20幾秒。
4、phpwind
測(cè)試版本:phpwind v9.0 UTF-8 正式版(當(dāng)前官方最新版)
phpwind以前和discuz比,速度上有優(yōu)勢(shì),現(xiàn)在據(jù)說(shuō)是全新開(kāi)發(fā),新版確實(shí)做了很大的改變(以前一直是discuz追隨者,和discuz設(shè)計(jì)差別不是很大),現(xiàn)在這一變化,應(yīng)該值的贊揚(yáng),但現(xiàn)在速度上不如discuz了,以前網(wǎng)頁(yè)底部顯示執(zhí)行時(shí)間都去掉了。
我導(dǎo)入1000W數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)大小13G,
首頁(yè)第一次訪問(wèn)8秒,第二次訪問(wèn)0.70477390289307秒
帖子列表頁(yè)(默認(rèn)排序)0.2x-0.5x秒 但我采用按“最新發(fā)貼”排序時(shí),花了182秒才顯示出來(lái)(我看了數(shù)據(jù)庫(kù)設(shè)計(jì),因?yàn)橹蛔隽税?ldquo;最后回復(fù)”的索引,“發(fā)帖時(shí)間”的排序都沒(méi)做索引,所以才很慢)
帖子內(nèi)容頁(yè),沒(méi)填充多少回帖也沒(méi)具體測(cè)試
5、discuz
測(cè)試版本:Discuz_X2.5_SC_UTF8 Discuz_X3.0_SC_UTF8
dx3看來(lái)是dx2.5的加強(qiáng)版,從后臺(tái)、前臺(tái)設(shè)計(jì)看,都變化不大。數(shù)據(jù)庫(kù)架構(gòu)變化也不大。
我導(dǎo)入1000W數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)大小18G,
首頁(yè)0.05-0.06秒,(也沒(méi)太大測(cè)試價(jià)值,因?yàn)槎紱](méi)讀到thread表)
帖子列表頁(yè)(默認(rèn)排序)0.07-0.09秒 但我采用按“發(fā)帖時(shí)間”排序時(shí),花了181秒才顯示出來(lái)(我看了數(shù)據(jù)庫(kù)設(shè)計(jì),因?yàn)橹蛔隽税?ldquo;最后回復(fù)”的索引,“發(fā)帖時(shí)間”的排序都沒(méi)做索引,所以才很慢)
帖子內(nèi)容頁(yè),(沒(méi)填充多少回帖也沒(méi)具體測(cè)試)
6、xiuno
測(cè)試版本:xiuno bbs 2.02 UTF8
我導(dǎo)入1000W數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)大小15G
首頁(yè)0.03-0.05秒
帖子列表頁(yè)0.03-0.05秒(回貼排序) 0.01-0.03秒(發(fā)帖排序)
帖子內(nèi)容頁(yè)0.03-0.05秒 (沒(méi)填充多少回帖也沒(méi)具體測(cè)試翻頁(yè))
我導(dǎo)入1億數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)填充到215G
首頁(yè)0.05-0.08秒
帖子列表頁(yè)0.05-0.08秒(回貼排序) 0.03-0.05秒(發(fā)帖排序)
帖子內(nèi)容頁(yè)0.05-0.08秒 (沒(méi)填充多少回帖也沒(méi)具體測(cè)試翻頁(yè))
總結(jié):
xiuno 雖然負(fù)載很高,但是功能上有很大的控制,去掉了很多可能影響到性能的功能,功能方面我覺(jué)得要是能有一個(gè)像wordpress這樣的一個(gè)平臺(tái)來(lái)彌補(bǔ),那將會(huì)有非常大的優(yōu)勢(shì)。
discuz 雖然沒(méi)做深入測(cè)試,不過(guò)已經(jīng)可見(jiàn)負(fù)載上面還是有缺陷的,同時(shí)thread表設(shè)計(jì)為 tid mediumint(8) UNSIGNED 所以最大數(shù)值也就16777215,所以他的設(shè)計(jì)也并沒(méi)有往更高考慮。
phpwind 這次的新版本的改變,證明了他們的決心,要和discuz走不同的路,也能看出來(lái)他們更注重用戶體驗(yàn)方面。程序性能已經(jīng)次之。
phpcms 性能是比以前提升了,但是用戶體驗(yàn)我是感覺(jué)不太好。不過(guò)能夠說(shuō)明CMS性能方面不如BBS程序。因?yàn)榕判蚍绞蕉?,而且同一個(gè)頁(yè)面列表也比論壇的多,所以讓CMS性能不如BBS。
帝國(guó)cms 雖然程序官方一直強(qiáng)調(diào)負(fù)載,但真還不如phpcms,光是通過(guò)分表提高負(fù)載,真不是一個(gè)好辦法。我個(gè)人愚見(jiàn),程序負(fù)載高不高,第一步應(yīng)該是正確設(shè)計(jì)索引,索引都沒(méi)設(shè)計(jì)對(duì),就用分表來(lái)解決,而且還要站長(zhǎng)手動(dòng)設(shè)置,完全增加使用難度。
dedecms 雖然用戶量非常大,但數(shù)據(jù)庫(kù)設(shè)計(jì)真不好,不但索引沒(méi)設(shè)計(jì)對(duì),而且還沒(méi)分表,而且也能看出dedecms并沒(méi)有考慮做高負(fù)載,畢竟上百W級(jí)數(shù)據(jù)的網(wǎng)站很少,對(duì)于企業(yè)站足夠了。
版權(quán)聲明: 本站資源均來(lái)自互聯(lián)網(wǎng)或會(huì)員發(fā)布,如果侵犯了您的權(quán)益請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除!謝謝!
轉(zhuǎn)載請(qǐng)注明: 對(duì)帝國(guó)cms、dedecms、phpcms等負(fù)載測(cè)試總結(jié)