担心被骂,本不想写这篇文章。犹豫良久,最终还是决定写。希望能够帮助到一些朋友,认识到数据库索引正确设计的重要性。
由于我比较懒,就简单用文字描述一下,就懒得切图片证明了,懂技术的朋友可以自己测试一下,可证实我的测试结果是否真实。不懂技术的朋友信不信也无妨。
测试程序:
CMS程序:帝国cms dedecms phpcms
论坛程序:discuz phpwind xiuno
负载测试结果:
xiuno > discuz > phpwind > phpcms > ( 帝国cms ? dedecms)
从数据库设计来看(个人观点):
xiuno > (discuz 、 phpwind 、 phpcms) > (帝国cms 、 dedecms)
dedecms和帝国cms都是老牌的CMS了,从的数据库设计来看,不知是数据库设计者完全没有理解mysql索引的真谛,还是留一手以对高负载需求的用户收费改进?(希望不懂技术的朋友不要喷我,真正懂mysql索引的朋友可以自己看一下他们对索引的设计,虽然对于dedecms和帝国cms的作者来说,我只是一个晚辈,像您们这样有10多年开发经验的人,我比较尊敬,但我建议当前的dedecms和帝国cms数据库设计者还是再研究一下mysql索引吧,可以不相信我,但可以花点时间看看discuz 、phpwind的数据库设计吧,确实是比您们的好)。
如果有幸帝国cms作者能看到此文,希望您再重新设计帝国cms架构吧,毕竟这些年您一直在改进帝国cms的负载能力,光是通过分表技术提升,没有真正用到索引来优化,真的不行的,如果用对了索引,性能还会有更大的提升。
dedecms的创始人我算是和他认识,但现在dedecms却不是他的,比较遗憾,现在的dedecms这几年确实没多大变化,一直在打补丁,这样下去真是比较悲剧。
我的测试环境:
i3CPU 4G内存 1T硬盘 win7系统 apache 2.2 + mysql 5.0(普通环境没有优化过)
测试方法:
导入100万至1亿 不等数据,进行简单的访问测试
我的导入方法:
根据各个程序的数据结构写出导入程序,
1.先写一个PHP程序,将数据写入 e:/insert1.sql 这个文件,
2.然后再通过 LOAD DATA local INFILE 'e:/insert1.sql' INTO TABLE `数据表名` character set 编码; 这种方式导入的,导入千W数据也就几分钟。
1、帝国cms
测试版本:EmpireCMS_7.0_SC_GBK (当前官方最新版)
先说说帝国cms,官方有一篇大数据测试贴(2千万数据、17.3GB数据库下帝国CMS超强生成速度 ),当年我看到这篇测试贴时,也觉得负载非常强大,但我测试后,令我失望了。
安装默认测试数据(共33篇新闻测试数据),首页改为动态首页 第一次访问0.670127010345459 第二次访问0.07926607131958
我导入100W数据时,数据库大小3.6G,首页第一次访问182秒,第二次访问155秒,我不知道当时帝国cms作者测试时,是否有测试过动态访问首页的时间。包括从6.0版起,每次更新都有说提升性能,但为何会这样?
帝国CMS官方的测试帖,就是误导人,忽悠人。
问题1.测试数据并没有提到动态访问首页或是生成首页。也没有提到动态访问列表页,和生成列表页。
问题2.测试统计的时间,也只统计了连接数据库之后的执行时间,并没有加上连接数据库的时间,这样很容易误导很多人,拿这个时间和别人统计了连接数据库的时间比。这样就差别大了。
问题3.每篇新闻的内容很少也就几行字。同时内容页模板,也非常简单,生成出来的文件也非常小,只有3K。正常的文章,都是上10K至几十K。
问题4.同时因为phome_ecms_news表 id 为主键,读取内容时,都是走的索引,所以动态访问内容页,编辑内容,生成内容页很快,都是理所当然的。
问题5.测试时都是通过分表来测试的,在真实站长做网站,不可能一开始就把网站内容分表。所以这和真实做站情况完全不一样。
像官方这种测试贴,真是误导人,而且还挂了几年。对于不懂技术的人,就是一种误导,让普通用户盲目的崇拜。
2、dedecms
测试版本:DedeCMS V5.7 SP1_GBK正式版 (当前官方最新版)
织梦CMS在知度CMS中一直公认的负载性能最差的CMS,确实很差。
我导入100W数据时,数据库大小只有330M,首页访问已经需要70几秒-80几秒才能访问。
3、phpcms
测试版本:PHPCMS V9_GBK 正式版 (当前官方最新版)
PHPCMS现在是由新的团队重新开发,也是号称高负载。
我导入100W数据时,数据库大小3G,首页访问需要20几秒。
4、phpwind
测试版本:phpwind v9.0 UTF-8 正式版(当前官方最新版)
phpwind以前和discuz比,速度上有优势,现在据说是全新开发,新版确实做了很大的改变(以前一直是discuz追随者,和discuz设计差别不是很大),现在这一变化,应该值的赞扬,但现在速度上不如discuz了,以前网页底部显示执行时间都去掉了。
我导入1000W数据时,数据库大小13G,
首页第一次访问8秒,第二次访问0.70477390289307秒
帖子列表页(默认排序)0.2x-0.5x秒 但我采用按“最新发贴”排序时,花了182秒才显示出来(我看了数据库设计,因为只做了按“最后回复”的索引,“发帖时间”的排序都没做索引,所以才很慢)
帖子内容页,没填充多少回帖也没具体测试
5、discuz
测试版本:Discuz_X2.5_SC_UTF8 Discuz_X3.0_SC_UTF8
dx3看来是dx2.5的加强版,从后台、前台设计看,都变化不大。数据库架构变化也不大。
我导入1000W数据时,数据库大小18G,
首页0.05-0.06秒,(也没太大测试价值,因为都没读到thread表)
帖子列表页(默认排序)0.07-0.09秒 但我采用按“发帖时间”排序时,花了181秒才显示出来(我看了数据库设计,因为只做了按“最后回复”的索引,“发帖时间”的排序都没做索引,所以才很慢)
帖子内容页,(没填充多少回帖也没具体测试)
6、xiuno
测试版本:xiuno bbs 2.02 UTF8
我导入1000W数据时,数据库大小15G
首页0.03-0.05秒
帖子列表页0.03-0.05秒(回贴排序) 0.01-0.03秒(发帖排序)
帖子内容页0.03-0.05秒 (没填充多少回帖也没具体测试翻页)
我导入1亿数据时,数据库填充到215G
首页0.05-0.08秒
帖子列表页0.05-0.08秒(回贴排序) 0.03-0.05秒(发帖排序)
帖子内容页0.05-0.08秒 (没填充多少回帖也没具体测试翻页)
总结:
xiuno 虽然负载很高,但是功能上有很大的控制,去掉了很多可能影响到性能的功能,功能方面我觉得要是能有一个像wordpress这样的一个平台来弥补,那将会有非常大的优势。
discuz 虽然没做深入测试,不过已经可见负载上面还是有缺陷的,同时thread表设计为 tid mediumint(8) UNSIGNED 所以最大数值也就16777215,所以他的设计也并没有往更高考虑。
phpwind 这次的新版本的改变,证明了他们的决心,要和discuz走不同的路,也能看出来他们更注重用户体验方面。程序性能已经次之。
phpcms 性能是比以前提升了,但是用户体验我是感觉不太好。不过能够说明CMS性能方面不如BBS程序。因为排序方式多,而且同一个页面列表也比论坛的多,所以让CMS性能不如BBS。
帝国cms 虽然程序官方一直强调负载,但真还不如phpcms,光是通过分表提高负载,真不是一个好办法。我个人愚见,程序负载高不高,第一步应该是正确设计索引,索引都没设计对,就用分表来解决,而且还要站长手动设置,完全增加使用难度。
dedecms 虽然用户量非常大,但数据库设计真不好,不但索引没设计对,而且还没分表,而且也能看出dedecms并没有考虑做高负载,毕竟上百W级数据的网站很少。
相关推荐
神箭手帝国Cms插件是神箭手推出的一个帝国CMS发布插件,需要的朋友可以前来本站下载。 插件安装 一、在本站下载该插件 二、安装插件 1、插件下载后,使用FTP将文件上传并解压至帝国网站的”e/extend/“目录下。...
【CMS程序】Dedecms 5.3到phpcms 2008转换程序是针对两种不同内容管理系统(CMS)的数据迁移工具。这个过程涉及到将一个网站从DedeCMS 5.3版本升级或迁移至phpcms 2008版本。DedeCMS和phpcms都是国内广泛应用的开源...
phpcms 一个强大的cms,很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很...
PHPCMS是一款功能强大的网站内容管理系统,而PHPWIND则是一款知名的开源社区论坛软件。将这两者整合可以实现网站内容管理与社区互动的无缝对接,为用户提供更完整的网站体验。以下是如何将PHPCMS与PHPWIND进行整合的...
在帝国软件官网创建15周年之际,帝国CMS7.5版发布了。帝国CMS经历过18个版本更新,7.5是第19个版本。我们一直不断在实践中突破创新,帝国CMS7.2版在移动互联实现与全面安全防御实现突破创新,让网站发展无后顾之忧。...
PHPCMS在这方面表现优异,而帝国CMS则由于其框架的限制,对二次开发的灵活性不足。 总而言之,站长在选择CMS系统时,应该根据自身的实际需求、技术背景和网站功能来综合考虑。如果站长注重二次开发的灵活性和个性化...
在帝国cms基础上开发的公文签收功能是phpcms公文签收功能的开发。帝国cms本身不具备公文签收功能,但帝国的可扩展性很强,可以自己增加这个功能。下面是帝国cms公文签收功能的实现步骤和要点: 一、公文签收要实现...
【PHP CMS程序PHPCMS与HDwiki整合版GBK版】是一种常见的内容管理系统(CMS)解决方案,结合了PHPCMS的强大内容管理功能与HDwiki的高效百科构建能力,以GBK编码格式提供服务。这个整合版主要面向需要搭建内容丰富的...
在Web开发领域,内容管理系统(CMS)扮演着至关重要的角色,phpcms作为一款广泛使用的开源CMS,其版本升级对于网站的稳定运行和功能提升至关重要。本次升级涉及的是从phpcms2007版本到phpcms2008版本的过程,特别是...
【PHP CMS程序升级详解:从phpcms2007到phpcms2008的GBK版转换】 在网站管理中,内容管理系统(CMS)扮演着至关重要的角色,它简化了网站的内容发布、更新和管理。PHP CMS是其中一种常见的开源解决方案,而phpcms是...
### PHPCMS、DISCUZ与ECSHOP的整合步骤详解 #### 一、概述 随着互联网技术的发展,各种网站系统之间的整合变得越来越重要。本文将详细介绍如何将PHPCMS、DISCUZ与ECSHOP这三种系统进行整合,以实现更好的用户体验和...
PHPCMS是一款流行的开源内容管理系统,它为网站开发者提供了强大的后台管理功能。这款系统的灵活性和易用性使得它在Web开发领域中广受欢迎。而"PHPCMS后台模板 美化PHPCMS后台"是针对该系统进行的界面美化工作,主要...
PHPCMS是一款流行的开源内容管理系统(CMS),专为构建企业网站、新闻门户和其他信息平台而设计。它提供了强大的内容发布、管理、权限控制以及搜索引擎优化功能。与HDwiki的整合版意味着用户可以在同一平台上实现...
标签"商业资料 [CMS程序]PHPCMS200"表明该资源可能是一份商业相关的文档,包含有关如何使用PHPCMS2008来创建和管理商业网站的信息,或者是关于如何优化和提升网站商业效果的指南。 在压缩包的文件名称列表中提到的...
在本压缩包"phpcms.rar_cms_cms php_php cms_php 新闻 系统_phpcms"中,包含的核心是PHP CMS的源代码和可能的相关组件,用于实现高效的内容发布、编辑、管理和维护。 PHP CMS系统通常由多个模块组成,如文章模块、...
如果你是开发者或网站管理员,你可以通过这个源码来了解CMS的架构,进行二次开发,或者对现有的系统进行定制。如果你是普通用户,你则可以通过这个系统轻松搭建属于自己的网站,无需复杂的编程知识。
完美动易2006 Sp6 SiteWeaver CMS6.5 Access MSSQL转 PHPCMS 2007 SP6 程序 Bulid 2008-4-26 2008-4-27修正两处错误: 1、友情链接不能转换的问题 2、增加了开始时间和结束时间,大家可以算算N万数据需要多少时间...
网站文章自动配图插件(php,适合任何cms,帝国cms、dedecms、wordpress、phpcms、destoon),附伪静态规则。 本插件不会修改任何cms核心文件,采用挂载方式,利用图床和gd库,可自动生成图片,不储存本地,使用缓存...
总结,从phpcms2007升级到phpcms2008的GBK版本,涉及到数据库更新、文件替换和功能测试等多个环节。在执行升级操作时,应遵循严格的流程,以确保整个过程顺利且无数据损失。同时,对于长期的网站维护,定期升级和...