用 hibernate处理过单表数据超过千万条数据系统的进来侃侃!

lavendergo 2007-05-17 03:39:24
公司有套系统打算使用hibernate实现持久层,部分表数据量超过千万,具体实现有啥建议或者有啥注意的地方,性能要求比较高
...全文
937 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
lavendergo 2007-06-04
  • 打赏
  • 举报
回复
并不是说分页写好后,每页设置多少就返回多少,即使你的分页写得再好数据库不支持特殊的sql语法也是没有办法的. 对于一些仍在运行的相对较老版本的db而言select返回给调用端的就是这个select的整个结果集(比如sybase),整个结果集是存储在web server的ram中的,一些优化的db可能会将结果集放在db的ram中.有兴趣的大家可以通过截取网络包来证明一下,到底是返回了100行还是返回了全部结果集
tod_99cn 2007-06-04
  • 打赏
  • 举报
回复
有人可以指点一下吗?? 谢谢
tod_99cn 2007-06-04
  • 打赏
  • 举报
回复
关注,顶一下
没有搞清楚主键和唯一索引在Nibernate中对性能的影响有什么不同?好像看过在Hibernate的说明文档中提过,尽量少用或者不用唯一索引做关联,主推用主键
Marcus-Z 2007-05-29
  • 打赏
  • 举报
回复
不是不可以,完全可以,但是有难度,看你们的经验,技术和架构设计等等了
ABCatai 2007-05-29
  • 打赏
  • 举报
回复
wo ding
lulu123ma 2007-05-26
  • 打赏
  • 举报
回复
数据这么多还要做hibernate??这是你们的技术决策有问题,不是hibernate有问题!
禽兽v5 2007-05-26
  • 打赏
  • 举报
回复
经常见到这种问题,很奇怪发问的人到底有没有写过sql查询分页代码。

因为无论查多少条也只返回一页1~100条,这用什么编程方式都不成问题。

如果真是要显示百万条以上,首先是服务器会崩溃,其次是客户端会崩溃
,和负载量有关,和语言没什么关系。
lavendergo 2007-05-25
  • 打赏
  • 举报
回复
谢谢ls的lizzz, 有个问题想问你一下, 你们的项目里面关联多部多?
我是感觉只使用单表查询可能对性能控制容易一些, 特别是索引的使用上, 比如where条件中字段的顺续等,很容易就破坏了索引的使用,但是有些统计数据必须要连接几张表,只使用单表查询也是很麻烦的,本来一条连接的sql这次要执行n 个单独查询,很矛盾.这时又觉得itabis的结果集映射确实舒服些,不知各位有啥看法??
lizzz 2007-05-25
  • 打赏
  • 举报
回复
我们做的一个银行项目用的就是hibernate,数据千万条不是什么问题。有以下3条经验。
(1)尽量的对关联表使用懒加载的方式;
(2)必须分页,否则即使虚拟机设置1.5G内存同样狂抛内存溢出。
(3)使用3.1以后版本的hibernate,之前版本对中文支持会导致海量的Class.forName操作,同时耗尽内存。
trueyellow 2007-05-25
  • 打赏
  • 举报
回复
1、HQL可以很容易实现多表连接查询吧。
2、内存溢出一般是Cache没清理的缘故,跟lazy load没关系。不清Cache经常会out of memory。
再,Hibernate不保证在有第三方程序的情况下Cache与DB的同步,这跟Entity bean是完全不一样的。总之,依赖二级Cache是很危险的。
3、建立关联可以让程序赏心悦目,不过请注意hibernate reference有关章节的最后一句话:"更实用的是使用HQL." ---当然,建立关联跟HQL查询不是冲突的,HQL同样可以从关联中得到好处。
4、如果建立了关联,必须要注意N+1删除问题。
lavendergo 2007-05-24
  • 打赏
  • 举报
回复
了解一下, 大家在用hibernate开发时设置的one-many,many-to-one等这样的关联多否??
还是绝大部分情况下都不设置关联,自己写代码维护这些关联呢?? 这些关联有时候很扰乱视听~~

对于数据较多的表还会设置one-many,one-many之类的关联??
fxbird 2007-05-24
  • 打赏
  • 举报
回复
mark
coolzyt 2007-05-24
  • 打赏
  • 举报
回复
数据越多越要用hibernate
因为hibernate提供了对象池缓存,大多数的时候都是直接从内存中取数据出来。
尽量使用单表查询,即使要做很多次查询,也比一个hql查出来性能要高,而且这样更容易命中缓存
zhuxr2003 2007-05-23
  • 打赏
  • 举报
回复
像google,查询上万亿的超海量数据,居然只要几毫秒就能返回结果,不知道怎么做的.
glseda 2007-05-23
  • 打赏
  • 举报
回复
又不是要每秒查询千万条
duke136 2007-05-22
  • 打赏
  • 举报
回复
大不了做临时表,不用担心,没问题的。
Rachael1001 2007-05-18
  • 打赏
  • 举报
回复
千万条数据太恐怖了吧
hql可不可以应付是个问题
持久层就是耗内存
我也想知道可不可以处理千万条数据
YuLimin 2007-05-18
  • 打赏
  • 举报
回复
千万条数据也不怕啊,电信计费的系统我们都用它,你又不是一下子返回很多数据。
lavendergo 2007-05-18
  • 打赏
  • 举报
回复
当然,也不是没个表都是超过千万,但是对于那些超过的表进行查询统计报表的时候效率怎么样呢?
lavendergo 2007-05-17
  • 打赏
  • 举报
回复
持久层具体实现还未定,原来一只是自己简单封装一下jdbc.
itabis 不是很熟,如果是ibatis的话有没有什么注意的地方啊? 比如缓存什么的
加载更多回复(1)

23,404

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧