追随Java
简单的事情重复做,就会产生累积效应!
posts - 260,  comments - 338,  trackbacks - 0
                                    提高查询数据的性能
     我负责的那个项目采用了webwork + spring + hibernate 的架构,用到了3个数据库.现在已经正是使用了,先庆祝一下.用户反映速度很慢,说有时一个查询要等10秒左右,妨碍了他们的工作.他们这么一说,我就 开始找原因了.我以为是用了hibernate引起的,所以请教了我的朋友--waterYe. 问了他一些关于怎样优化hibernate.比如说用lazy load .可hibernate 3.0默认方式是lazy load.而且表间的关系是手工控制的.(好像对字段也能lazy load,不过我还没有实践过).然后我把配置文件发给他让他给我看看.waterYe很快就发现了问题,他发现我没有使用数据库连接池(这个我一直到用了,怎么可能没有呢?).原来我在appllicationContext-hibernate.xml文件中用了"org.springframework.jdbc.datasource.DriverManagerDataSource"这个并没有提供连接池的功能.这个是我没有注意到的.我是用equinox新建的项目,我以为它用了连接池.以后学习过程中真要把它们吃透,一定要知其所以然.最后我改用了BasicDataSource.请参考http://www.is.pku.edu.cn/blog/?date=2004-12-29&id=2&m=display  .Water Yer 建议我用WEB服务的JNDI的方式会好些. 他还发现了一个问题就是我把很多ArrayList等数据放在了session中(其实我知道这样做肯定不好,可我不知到怎样把Action中的ArrayList的数据传的JSP页面中,所以就用了session) ,朋友建议我改成放到request中(不知有没有更好的方法).可修改完这些查询的性能没有明显的提高.
      这个系统是一个比较重要的系统,对性能要求比较高.所以大家都很重视.所以我们的老大,也在为我想一些办法.今天一上班,就把我叫过去,一起讨论数据库优化.其实我也有想到过数据库方面肯定也是影响性能之一,还有就是网络阻塞.由于上星期五我就请假回家,时间非常紧张所以也没有忙过来.
    老大说可能把存储过程改成视图可能会好点.然后我俩就把存储过程改成了视图来比较到底那个运行的速度快.可我们发现改完的效果不是很明显(差不多).由于连接到3个数据库,而且他们的数据也很多,请求处理的业务逻辑也很复杂,用到了5个存储过程.老大又提出,是不是创建索引可能会又效呢?我们又开始对所有表创建索引(请参考http://www.vckbase.com/document/viewdoc/?id=1307).果真查询的速度很快了.客户也满意了,当然我也非常的高兴.又解决了一个问题.
   所以遇到问题一定要从多方面来考虑,仔细想一想,多测试,多找资料,相信问题一定有解决办法.
posted on 2005-12-07 15:36 Harryson 阅读(493) 评论(0)  编辑  收藏 所属分类: SqlServer

只有注册用户登录后才能发表评论。


网站导航:
 

<2005年12月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用链接

留言簿(10)

随笔分类(319)

AJAX

Coffee House

CSS

Java

JavaScript

Open Source

ProjectManagement

友情Blog

最新随笔

最新评论

阅读排行榜

评论排行榜