论坛首页 Java企业应用论坛

为何每次问到传统sql如何调优就没人回答?另附几则hibernate性能优化实践

浏览 59349 次
该帖已经被评为良好帖
作者 正文
   发表时间:2010-03-23  
anky_end 写道
很多做大系统的公司,例如电信,电力,卖油的,其系统历史悠久。

应该说对关系数据库操作的经验是自始至终贯彻下来,积累下来。对系统设计也是以数据库模型为中心而不是对象为中心。这是个设计思路上的根本不同。

另外就是系统风险,应该说,要用好hibernate,是有系统风险的。

罗宾当初有写过帖子,证明hibernate事实上没有性能问题,他也是有实例支撑,javaeye早期就是hibernate做持久层。但是很多电信、电力系统转向hibernate的过程中,能优化到javaeye层次的很少。很多系统仅仅一个登陆过程就比从前jdbc时代慢上许多。

说一千道一万,不熟悉不精通hibernate的还占大多数。

类似jdbc、ibatis这样的sql操作框架易过渡性还是很有吸引力的。


我想问一下,登陆过程会慢多少?是用测试工具测的吗?
0 请登录后投票
   发表时间:2010-03-23  
anky_end 写道
linliangyi2007 写道
lzmhehe 写道
我现在做的系统hibernate肯定用,担不是全用,很多功能就是一个查询而且还不是自己的数据库,还不如直接使用jdbcTemplate

至于那位soho的说
引用
这就是设计问题了,在我们公司,设计都通不过,还优化个啥啊!!


我想说的是,存在即为合理,电信的很多应用oss bss都会出现这种情况,很多表在关联,同时数据量还比较大,主表最少也得是千万级的,更让人气愤的是,数据库还不是你们公司的,而是竞争者的


你说的这个情况存在于老系统的对接,但通常发生以后,过一段时间是要变革的。存在即合理,不合理就会被改变,有时候存在时为了等待改变。

此类系统变更都是一个复杂的替换过程~

所谓的大系统,历史太悠久了。核心的开发人员,熟悉业务的人员,对数据库模型无比精通,他们的思想就是数据库中心论。
俺大概也是受这类影响比较深刻。

hibernate在电信行业也有不少推广,我的感觉,普遍还是比jdbc时代慢不少


感觉靠谱吗?
0 请登录后投票
   发表时间:2010-03-23   最后修改:2010-03-23
搞不懂,楼上一定要举出一些特例来证明Hibernate不行,不知道居心何在?

试问对于95%以上的中国程序员而言,Hiberante真存在问题嘛?

没人说Hiberante啥都OK的啊?还是说人的问题要比工具的问题更加突出一些?
0 请登录后投票
   发表时间:2010-03-23  
抛出异常的爱 写道
linliangyi2007 写道
ztka 写道
linliangyi2007 写道
ztka 写道
linliangyi2007 写道
seele 写道
SQL需要关联10张表,每张表有1000万数据以上。。最少。。需要进行复杂的查询。需要用多很多ORACLE特有的函数..写完的SQL在100行以上。。

不认为hibernate能够适合这样的环境



这就是设计问题了,在我们公司,设计都通不过,还优化个啥啊!!


这就是设计问题了??估计你不是搞企业开发的,现有的SAP,ORACLE,JDE的ERP,都是这样设计。


我搞企业开发,而且还搞SOA和ESB,做了一整套的系统结构。一个企业级系统,现在不是多表关联,恰恰是要合理切分,形成SOA服务点,这个说来话又长了~~~
跟互联网差异确实挺大,但偏偏Hiberante在SOA的系统上特适合,因为整个企业总线都是面向消息对象的。

嗨~~都别纠结于技术了,SQL也好Hibernate也好,能做好应用就OK了。

这个帖子的渊源要上述到两个帖子了,一个面试官问应聘者,你了解Hibernate的嘛,结果应聘的很不屑的说Hiberante不适合大系统....总之他不屑学的意思,于是乎就有了一堆人的争论,接着又有一个帖子出现了,就是楼主发的。到后来才是这个帖子了。。。

任何技术都没有错,就看人怎么用了。


那么你为什么很武断的说那种数据就是设计问题? 做了很多ORACLE,JDE和SAP的2次开发,发现他们的ERP设计都是这样做的,难道他们都设计通不过?


SQL需要关联10张表,每张表有1000万数据以上
兄弟,虽然本人不是sql专家,但我身边有很牛的sql大拿,如果你身边也有的话,你问问,上面这种描述如果不是设计有问题,是什么?
这种情况下早进行设计上的切分优化了,不会再sql层面做优化,做了也没用。拜托了,切合实际了,俺说的都是实实在在的项目经历,期中不乏和Oracle高手请教过,人家也极力反对这样大表+多表的查询的。


我老婆的工作大多数是由于这种表的存在需要。



数据迁移?
0 请登录后投票
   发表时间:2010-03-23  
其实我就觉得纳闷了,每个人对武器的爱好不同。比如有人说屠龙好有人说倚天好,还有人说杨过的那把重剑好!任何东西都没有觉得的好,用的人顺手就是好的。Hibernate 固然有它的好处,JDBC .. Spring JDBC等也有他的好处。为什么大家一定要去说那个好坏呢?用的人觉得了改玩意的好坏。没必要去争。最多能够将Hibernate最适合什么,怎么把它的优点发挥到最大。我觉得这个比较重要。至于好坏。我觉得没什么好,没什么坏。只是那个更适合当时情况。
0 请登录后投票
   发表时间:2010-03-23  
看到好多大拿。。。

帖子都过了遍,总体感受:火药味较重!
0 请登录后投票
   发表时间:2010-03-23  
gdpglc 写道
其实我觉得,hibernate的性能问题就象 c语言和java语言的关系一样。
c语言速度快是公认的,为什么现在大家都在用java呢? 原因很简单,是因为java的一点性能损失代来了java语言使用上的简单和方便。而这点性能损失是可忽略的。

jdbc和hiberante的关系我认为是一样的。hibernate代来的是业务逻辑的方便表达,损失的是一点可忽略的性能。

但是hibernate是以面向对象为基础的,而现在大多数项目是以 失血 模型 方式开发的。代码本质上是对业务逻辑的过程化描述。而hibernate的内含确是要支撑领域模型的,需要一些学习成本。因此我认为,以过程化为主的软件,在人员水平还不能理解hibernate的内含时,是不宜使用它的。

就C和java的问题插一嘴:确实有些时候性能损失很大。
比如十八摸的broker和ESB,在响应性能要求内能支撑的并发数差很多。
当然,我预感到有人会说JVM的调优。呃,问题是性能差距大是十八摸的顾问都承认的。
0 请登录后投票
   发表时间:2010-03-23   最后修改:2010-03-23
jiangduxi 写道
其实我就觉得纳闷了,每个人对武器的爱好不同。比如有人说屠龙好有人说倚天好,还有人说杨过的那把重剑好!任何东西都没有觉得的好,用的人顺手就是好的。Hibernate 固然有它的好处,JDBC .. Spring JDBC等也有他的好处。为什么大家一定要去说那个好坏呢?用的人觉得了改玩意的好坏。没必要去争。最多能够将Hibernate最适合什么,怎么把它的优点发挥到最大。我觉得这个比较重要。至于好坏。我觉得没什么好,没什么坏。只是那个更适合当时情况。

问题是如果TEAM用了hibernate那么对hibernate不爽的人就要被使用hibernate

linliangyi2007 写道
搞不懂,楼上一定要举出一些特例来证明Hibernate不行,不知道居心何在?

试问对于95%以上的中国程序员而言,Hiberante真存在问题嘛?

没人说Hiberante啥都OK的啊?还是说人的问题要比工具的问题更加突出一些?

hibernate  用set变update语句的问题
困扰过几乎我见过的每个使用过hibernate的人员。
没有人在第一时间会知道为什么。
都是在出现后查出来的
长的1个月后项目结束后发现问题根源。
短的用了1周去找项目中误用的地方
0 请登录后投票
   发表时间:2010-03-23  
linliangyi2007 写道
SQL需要关联10张表,每张表有1000万数据以上
兄弟,虽然本人不是sql专家,但我身边有很牛的sql大拿,如果你身边也有的话,你问问,上面这种描述如果不是设计有问题,是什么?
这种情况下早进行设计上的切分优化了,不会再sql层面做优化,做了也没用。拜托了,切合实际了,俺说的都是实实在在的项目经历,期中不乏和Oracle高手请教过,人家也极力反对这样大表+多表的查询的。

问题是在实际项目中就是这样,oracle ERP就是不分表,怎么着吧,你有脾气说全部不用oracle ERP了?
遇到过最后的查询oracle顾问都搞不定的情况,呃,至少第一个顾问没搞定,投诉后又调了个更高手的才搞定,这种鬼事。
不是都是SNS那样能自己作主的,谢谢。
0 请登录后投票
   发表时间:2010-03-23   最后修改:2010-03-23
miaow 写道
linliangyi2007 写道
SQL需要关联10张表,每张表有1000万数据以上
兄弟,虽然本人不是sql专家,但我身边有很牛的sql大拿,如果你身边也有的话,你问问,上面这种描述如果不是设计有问题,是什么?
这种情况下早进行设计上的切分优化了,不会再sql层面做优化,做了也没用。拜托了,切合实际了,俺说的都是实实在在的项目经历,期中不乏和Oracle高手请教过,人家也极力反对这样大表+多表的查询的。

问题是在实际项目中就是这样,oracle ERP就是不分表,怎么着吧,你有脾气说全部不用oracle ERP了?
遇到过最后的查询oracle顾问都搞不定的情况,呃,至少第一个顾问没搞定,投诉后又调了个更高手的才搞定,这种鬼事。
不是都是SNS那样能自己作主的,谢谢。


你也说了是Oracle的ERP,人家卖数据库的,最好你啥都用oracle,用存储过程,用oracle pro c,这样才有经济利益啊。

Hiberante自诞生那天开始就不是为了应付这种极端情况的,OK。
0 请登录后投票
论坛首页 Java企业应用版

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