论坛首页 Java企业应用论坛

把业务逻辑从存储过程中拿出来

浏览 41087 次
精华帖 (2) :: 良好帖 (2) :: 新手帖 (15) :: 隐藏帖 (5)
作者 正文
   发表时间:2008-07-25  
我看这只能说明一个问题: 你们原来写的存储过程太太太差了
0 请登录后投票
   发表时间:2008-07-25  
拿出些优化的事实步骤吧
0 请登录后投票
   发表时间:2008-07-25  
都是操作表而已,java和存储过程区别并不大。
从LZ的描述看,应该是存储过程中select语句或者其它语句的关联有性能问题。
把几百万的表进行关联,确实是没有单独的几条select sql快的。
还有LZ说的原存储过程有逻辑不够好导致性能问题。
不过我相信你现在的方式用存储过程一样可以实现。并不是存储过程的问题。
0 请登录后投票
   发表时间:2008-07-25  
上百万级别的数据,用存储过程肯定比用jdbc实现速度要来的快,那怕是select语句,楼主遇到这种情况,只能说明存储过程写的有问题.
0 请登录后投票
   发表时间:2008-07-25  
酒店一天的数据怎么会有几百万?
0 请登录后投票
   发表时间:2008-07-25  
hyhongyong 写道
把存储过程用java重写,并不是简单的重写。 原来存储过程的步骤,如果用java直接按那个思路写,效率可能会相当差。 只是用面向对象的方式重新实现一些存储过程的逻辑而已,至于性能的优化,在优化前我们并没有太大的把握,只是觉得性能出现问题了,DB上暂时又没有什么好办法可以提升(实际上我们也试了一些方法,比如存储过程中调试,加索引等但都没有实质提升),用java实现应该是一条路。

 

你这不是优化,你是在玩。

 

你在开始重写之前都不知道真正的问题出现在哪里。

我想你不也不知道为什么重写之后速度快了。

0 请登录后投票
   发表时间:2008-07-25  
hyhongyong 写道
关于存储过程,我们没有专门的DBA进行优化,我只能从自己理解的角度去思考一下:
1、数据量:价格计算过程涉及到从4、5个表中取数据,其中有两个表的数据量较大(几百W)
2、因为存储过程的技术限制,选择和归并是需要花些时间的。而程序可以优化这些过程
3、DB表锁机制,存储过程占用表锁的时间相对长
4、将时间长的存储过程时间,化了简单的DB表查询,压力转移到AP端(事实上压力对DB和AP优化前后都没有什么问题)


你自己DB优化的不好,就说存储过程不好?

 

1、存储过程处理的过程复杂时,性能未必好!
2、程序中也有很多地方是可以优化的。
3、面向对象的程序应对业务逻辑的变化,有时比存储过程还要好!

 

这三点中的1、3是歪理,2是废话!

0 请登录后投票
   发表时间:2008-07-25  
我们的DB是用的oracle 10 的RAC,AP服务器用的是weblogic 8 集群。在计算所有酒店的一天价格时,用存储过程要10多分钟。如果计算多几天的价格,则会因为存储过程时间过长,造成AP报timeout。
-----------------------------------------------------------------------------
另一个问题:这儿应该用异步处理。
0 请登录后投票
   发表时间:2008-07-25  
楼上的其中几位,说话请留点余地吧。

楼主愿意把他的体验说出来给大家分享,这是好事啊。或许他是不太清楚为什么,或许他的优化是有问题的,大家可以在技术上进行分析,帮助他把问题搞清楚嘛。如果楼主感受到的只是打击和否定,他还会愿意与大家分享吗?各位又从讨论中收获了什么呢?
3 请登录后投票
   发表时间:2008-07-25  
应该是你存储过程写的有问题。

另外你用的是Oracle,不会存在存储过程锁表的问题。
0 请登录后投票
论坛首页 Java企业应用版

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