hibernate 大数据处理

Aschrius 发布于 2014/11/22 18:21
阅读 431
收藏 0

最近在做一个小项目,有进行大数据量的查询、计算。然后性能实在是。。。

于是做了以下的调整

1.重新构建的数据库。去掉了外键,在查询,计算的时候不再使用对象导航进行查询。

2.使用了session.createSQLQuery(sql)【说是使用这方法hibernate不会管理缓存。

性能确实提高了一些。

然后遇到了一些问题(好吧都是比较基础的。如下:

hibernate

1.flush操作是io操作直接操作到数据库吗?如果是IO操作是会影响性能的吧?在多少条数据入数据flush会比较好?

2.如果我有个【对象】已经save ,而且包裹在事务中,但是在事务提交前我用的clear,然后提交事务,这个对象能保存到数据库嘛?

3.什么时候使用clear?是否在clear之前都要先flush下?


自己的理解是,clear是清理session缓存内的对象。如果查询数据,hibernate会先查询缓存内的,如果没有,再查数据库。这里肯定会有性能的损失。所以我想每次save对象都clear,然后就出现一些问题了。。。。


好吧想问的问题就这三个,我是否理(hu)解(shuo)有(ba)误(dao)呢?

加载中
0
pantrick
pantrick
复杂查询请直接用sql,或者jdbc,或者mybatis,通过优化sql提高性能
Aschrius
Aschrius
其实也没啥复杂的。而且hibernate也支持的sql查询,性能貌似也不差。我想知道的是我提的三个问题。
0
小99
小99
我不用hibernate,这3个问题所以我就不回答了,提一些别的建议,你说查询多,可以尝试lucene,
Aschrius
Aschrius
大致是一取,new新对象,一存这样子。 嗯,lucene近期会去看看。
0
buglife
buglife
flush貌似就是手动提交事务吧
0
兮风古道
兮风古道

楼上一群胡说八道的。

性能问题能靠猜?

你做profiling了吗? 你把有问题的代码片段贴出来

0
jeffsui
jeffsui

先查看sql执行效率吧,hibernate也不是性能差的代名词。看哪里耗费了时间。

至少在数据库层面对执行的sql语句做个计划任务。

返回顶部
顶部