浏览 4418 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-06-15
希望大家能夠討論出更多更好的方案. Thanks & Regards, Javaxmler 6/15 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-06-15
通常的解决方法是在中间加一层Cache减少数据访问,很多的OR Mapping方案(包括Hibernate)都提供了Cache功能,如果DAO层是自己编写的,特别是通过SQL语句方式的,可能在利用Cache方面还有一些改造工作要做。
|
|
返回顶楼 | |
发表时间:2004-06-16
问题是Cache会带来数据同步的问题,数据同步解决不了的话Cache就没任何意义了。
|
|
返回顶楼 | |
发表时间:2004-06-16
减少数据库的访问次数是最终的目的。达到这个目的的方法很多,比如说记录一个对象在一次transaction中经历的变化,只在将对象最后的状态和数据库同步。其次,使用lazy loading可以减少不必要的关联性的数据库操作。然后,就是cache,cache会需要你做许多同步的工作。还好,hibernate帮我们考虑了这些问题。有空的话可以看看hibernate的源码,gavin king的确水平很高。
|
|
返回顶楼 | |
发表时间:2004-06-17
總結了一下:
一, 從application方面來說: 1.使用connection pool機制 2.使用lazy loading 3.使用cache 4.資源釋放在finally塊完成, 且要及時 二,從database方面來說: 1.使用procedure 2.sql中盡量少用函數 3.sql查詢時盡量定義精確字段,慎用select * 期望還能看到更新的方案, ^-^ |
|
返回顶楼 | |
发表时间:2004-06-17
建议将a unit of work模式加入,因为它能减少无谓的数据库操作。
引用 记录一个对象在一次transaction中经历的变化,只在将对象最后的状态和数据库同步
|
|
返回顶楼 | |
发表时间:2004-08-20
如果是自己写的jdbc操作,留意可以采用batch操作的地方。
操作sql,尽量采用bind variable的形式取代类似"select xxx from xxx where xxx.id = " +id;的语句。 把耗内存最大的sql捉出来,逐个优化。 |
|
返回顶楼 | |
发表时间: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? |
|
返回顶楼 | |