大家好,banq好,我想问大家一个系统速度,或者说是数据库的问题

07-01-07 yuxb111
                   

项目大概情况如下:我们客户给我们提供了全美所有公司的数据,一共二千万条左右.按照前台的输入,查询相应的结果,结果一般很多,至少几百条记录,还有按各种可能的情况排序.系统的开发是ASP+储存过程+SQL Server 2005,一般数据库的优化方法都用在上面了,可是速度奇慢,后来,我们采用按照州建表,把数据拆开.系统的相应速度还是在20-30s内.我们不知道如何再进一步提高系统速度.现在客户提出要求,让我们用.net来做前台,我想问各位的是,
1.对于这种大数据量的处理,大家一般是如何做的呢?怎样才能让系统的相应时间缩短在10s以内呢?
2.如果还是按照.net+存储过程的设计方法,其他不做太大的改动的话,能明显提供系统相应时间吗?
谢谢各位高手和banq的指教,谢谢!

                   

banq
2007-01-08 18:09

提高系统性能,不能闷在数据库上面,这上面潜力总是有限的,而应该抬头向上,使用分布式计算,Google搜索就是一个分布式计算的例子。

具体来说,就是使用缓存,根据你的业务特点,将那些重复查询的数据缓存在中间服务器内存中。

如果你的数据可重复性很小,可以参考google这样缓存机制,查查资料。

eggplant
2007-01-08 18:10

这种大数据量的查询不可以做实时检索的,效率太低.尤其是企业信息这种极少变动的数据.
可以根据提供给用户的查询条件,在后台用程序预先计算生成中间表.响应用户查询请求时,直接在很小的中间表里搜索就可以了.
另外,个人感觉按照州拆分数据可能是个坏主意.有可能一个查询需要在不同的表里执行50遍才能有结果.能快得了吗?

guotielong
2007-01-08 22:43

就数据库来说.可以做以下几方面的工作.一分析数据的构成.现在我没太搞清楚,是什么样的数据.我们是保险行业的.我们把一些特殊数据按年分.每年建成一个表.不用储存过程同样是操作数据库不能提高性能.查询时建立临时表.同时使用多层结构的应用程序.最直接的方法弄个好机器就行了.

my3bit
2008-12-10 15:11

你可以考虑采用lucene之类的搜索引擎!

2Go 1 2 下一页