论坛首页 Java企业应用论坛

如何減輕data communication過程中的database loading

浏览 4418 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2004-06-15  
一般系統主要的工作都在做 data communication,其中 database loading 是很重的,請問有哪些方式可盡量減輕這過程中間的 loading,最好能有一定的描述及原因說明?

希望大家能夠討論出更多更好的方案.

Thanks & Regards,
Javaxmler 6/15
   发表时间:2004-06-15  
通常的解决方法是在中间加一层Cache减少数据访问,很多的OR Mapping方案(包括Hibernate)都提供了Cache功能,如果DAO层是自己编写的,特别是通过SQL语句方式的,可能在利用Cache方面还有一些改造工作要做。
0 请登录后投票
   发表时间:2004-06-16  
问题是Cache会带来数据同步的问题,数据同步解决不了的话Cache就没任何意义了。
0 请登录后投票
   发表时间:2004-06-16  
减少数据库的访问次数是最终的目的。达到这个目的的方法很多,比如说记录一个对象在一次transaction中经历的变化,只在将对象最后的状态和数据库同步。其次,使用lazy loading可以减少不必要的关联性的数据库操作。然后,就是cache,cache会需要你做许多同步的工作。还好,hibernate帮我们考虑了这些问题。有空的话可以看看hibernate的源码,gavin king的确水平很高。
0 请登录后投票
   发表时间:2004-06-17  
總結了一下:

一, 從application方面來說:
1.使用connection pool機制
2.使用lazy loading
3.使用cache
4.資源釋放在finally塊完成, 且要及時

二,從database方面來說:
1.使用procedure
2.sql中盡量少用函數
3.sql查詢時盡量定義精確字段,慎用select *

期望還能看到更新的方案, ^-^
0 请登录后投票
   发表时间:2004-06-17  
建议将a unit of work模式加入,因为它能减少无谓的数据库操作。

引用
记录一个对象在一次transaction中经历的变化,只在将对象最后的状态和数据库同步
0 请登录后投票
   发表时间:2004-08-20  
如果是自己写的jdbc操作,留意可以采用batch操作的地方。
操作sql,尽量采用bind variable的形式取代类似"select xxx from xxx where xxx.id = " +id;的语句。
把耗内存最大的sql捉出来,逐个优化。
0 请登录后投票
   发表时间:2004-08-20  
sayor 写道
建议将a unit of work模式加入,因为它能减少无谓的数据库操作。

引用
记录一个对象在一次transaction中经历的变化,只在将对象最后的状态和数据库同步

说道hibernate的二级cache,我还是很头痛的。当我使用nonstrict-read-write的cache时,在删除集合中的某些元素后,重新再读取时出现No row异常(cache没有同步数据库底层的结果!),说到这个重新读取,还是有点意思的,因为我是采用了spring的open session in view filter,在删除数据之后我直接chain到读取数据。
大家是一般采取什么方式同步这种cache?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics