一个性能问题,希望各位帮助解决

06-08-24 imlsq
         

问题:一个对象有几个关联子对象,他们都是一对多的关系。下面我们以一个酒店为例子来说明,

酒店A 包括 房间A1 ,房间A2 , A1,A2在不同的时间段有不同的价格。

.......

酒店Z 包括 房间Az ,房间Az , Az,Az在不同的时间段有不同的价格。

如果酒店有10000万家,我们要求计算在某段时间之内的其中几个酒店,每天的价格。

这个的计算,我们以前一般都是在数据库写存取过程来实现,但是这样在

性能上还是无法满足需求,各位有什么好办法提高计算速度,提高用户的响应速度。

比如能不能把记录缓存在内存的方式来实现,所有的计算提到内存在计算会不会快一些呢?

         

imlsq
2006-08-24 18:42

补充说明,数据库的记录不会超过5万条

banq
2006-08-25 16:54

》能不能把记录缓存在内存的方式来实现,所有的计算提到内存在计算会不会快一些呢

当然可以,但是注意第一遍时肯定慢的,缓存每个酒店的结果对象,这样,以后查询这个酒店模型对象时,就快了。

具体实现方式分两步走:

1. 领域建模,建立合适的酒店模型对象。

2. 使用缓存机制,由于在J2EE中不能直接使用缓存,需要自己动手做一些基础工作,做得不好,还有内存泄漏的隐忧,建议使用jdonFramework之类的缓存支持框架,只要你建立好模型对象,使其继承Model或实现ModelIF即可

superbible
2006-09-12 09:42

这个不可简单而论。

既然你说以前是用存储过程做的,想必利用了很多SQL的特性;如果放到内存里做,则无法利用SQL来查找了。(如果是简单而大量的计算尚可考虑。)

可以考虑优化数据库表结构,合理的增加一些冗余以提高查询速度;

或者非实时的计算,针对于比较固定的例行查询,可以每天晚上报出结果,先存下,查看时就快了。