淘特cms
当前位置:淘特CMS->新闻中心
淘特Asp.Net Cms测试:单表百万1亿条记录
  • 作者:
  • 日期:2010/5/21 16:25:14
  • 出处:淘特CMS
  • 点击:

测试环境:普通笔记本上运行淘特Asp.Net Cms2.0{CPU:Intel T5750 2.0G,内存1G}

数据库环境:文章单表记录107.653万条记录,数据采集至地方分类信息,数据并非大家常使用的程序批量录入到库(那样信息的大小和复杂性就和真实有所差别),确保测试和实际使用效果一致。100个分表。数据达到1亿。

前言:其实海量数据的优化方案,大家最常用的就是分表存储了。比如你有1万数据,普通的管理查询比较慢,那怎么办呢,可以将1万数据分成若干份,比如一份存1000条,这个数量对数据库来讲就容易接受了,而且执行速度也快了。原理是这样,不过要做到性能最佳化,瓶颈就在分表的数量和单表的最大容量上了。这两个参数具有以下特点:单表容量支持越大越好;分表数量越少越好。国内很多的软件商也做过类似的测试,不过笔者认为单表单表容量低于百万的话(有的拿单表10万做测试)没有任何意义,只能说明数据库查询连基本的优化都没有做。要知道现在的关系型数据库起码能支持千万级的数据记录。只不过我们要把速度做到更快,才实现分表的方案。根据多年海量数据处理经验,单表100万条记录是一个比较适中的方案,控制分表在100以内,即能满足绝大多数的业务需求(速度)。

说明:本测试只演示了数据压力最关键的部分(列表、搜索、发布),像文章的修改,单条文章的显示这种从数据库中取单条记录的本文不在演示(除非是为了糊弄群众:))。

后台-文章管理,先看下单表百万时的执行速度

第一页:

第11959页:

第47849页

最后一页:

1亿条记录演示:

说明:淘特Asp.Net Cms在文章管理时的算法如下

首先查询第一副表,如果我们设置一页显示100条记录,那么前1万页都是在查询第一个副表了,所以查询速度与单表查询的情况是一样的,速度的瓶颈关键就在单表的查询优化上。那第1万到第2万页将显示的是第二副表的数据,相当于每次都是从百万中查询,所以速度永远是上面我们测试的单表数据100万条时的结果。另外还有一种情况,就是可能会遇到中间过程,也就是副表1还剩下50条,那这时就需要用到副表1的最后50+副表2的最前50,因为这种情况比较容易优化(用select top 就能实现),虽然是查询两个表,其实和从一个查询的时间相关无已。

三、模糊查询的速度

淘特Asp.Net Cms使用中文分词算法,经过将数据库的内容索引后,生成索引文件,可根据标题和内容同时使用多关键字查询,查询结果以红色高亮显示,效率和功能不是普通的数据库查询所能达到的。

上图是百万条记录,根据关键字查询到的结果,可以看到用时不到1S。

下面看看多关键字查询:

说明:其实100万也好,10万也罢,即使文章分页速度足够快,但是那么多的数据,如果需要某一天需要修改某条记录,单凭手工这么一页页翻是不现实的,所以一个好的CMS,一定需要一个强大的搜索引擎,当数据量大时,可以快速查出需要的信息。对网友、对网站管理员都是一个好的体验。

淘特CMS的站内搜索也是以百万数据为单位,每一百万数据生成一个单独的索引,查询时可以像文章的多表分储一样支持多索引联合查询。确保数据无论多么大,用时始终是单个索引文件用的时间单位。

最新评论
用 户:
内 容:
验证码: