精华帖 (2) :: 良好帖 (2) :: 新手帖 (15) :: 隐藏帖 (5)
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-25
我看这只能说明一个问题: 你们原来写的存储过程太太太差了
|
|
返回顶楼 | |
发表时间:2008-07-25
拿出些优化的事实步骤吧
|
|
返回顶楼 | |
发表时间:2008-07-25
都是操作表而已,java和存储过程区别并不大。
从LZ的描述看,应该是存储过程中select语句或者其它语句的关联有性能问题。 把几百万的表进行关联,确实是没有单独的几条select sql快的。 还有LZ说的原存储过程有逻辑不够好导致性能问题。 不过我相信你现在的方式用存储过程一样可以实现。并不是存储过程的问题。 |
|
返回顶楼 | |
发表时间:2008-07-25
上百万级别的数据,用存储过程肯定比用jdbc实现速度要来的快,那怕是select语句,楼主遇到这种情况,只能说明存储过程写的有问题.
|
|
返回顶楼 | |
发表时间:2008-07-25
酒店一天的数据怎么会有几百万?
|
|
返回顶楼 | |
发表时间:2008-07-25
hyhongyong 写道
把存储过程用java重写,并不是简单的重写。
原来存储过程的步骤,如果用java直接按那个思路写,效率可能会相当差。
只是用面向对象的方式重新实现一些存储过程的逻辑而已,至于性能的优化,在优化前我们并没有太大的把握,只是觉得性能出现问题了,DB上暂时又没有什么好办法可以提升(实际上我们也试了一些方法,比如存储过程中调试,加索引等但都没有实质提升),用java实现应该是一条路。
你这不是优化,你是在玩。
你在开始重写之前都不知道真正的问题出现在哪里。 我想你不也不知道为什么重写之后速度快了。 |
|
返回顶楼 | |
发表时间:2008-07-25
hyhongyong 写道
关于存储过程,我们没有专门的DBA进行优化,我只能从自己理解的角度去思考一下:
1、数据量:价格计算过程涉及到从4、5个表中取数据,其中有两个表的数据量较大(几百W) 2、因为存储过程的技术限制,选择和归并是需要花些时间的。而程序可以优化这些过程 3、DB表锁机制,存储过程占用表锁的时间相对长 4、将时间长的存储过程时间,化了简单的DB表查询,压力转移到AP端(事实上压力对DB和AP优化前后都没有什么问题)
1、存储过程处理的过程复杂时,性能未必好!
这三点中的1、3是歪理,2是废话! |
|
返回顶楼 | |
发表时间:2008-07-25
我们的DB是用的oracle 10 的RAC,AP服务器用的是weblogic 8 集群。在计算所有酒店的一天价格时,用存储过程要10多分钟。如果计算多几天的价格,则会因为存储过程时间过长,造成AP报timeout。
----------------------------------------------------------------------------- 另一个问题:这儿应该用异步处理。 |
|
返回顶楼 | |
发表时间:2008-07-25
楼上的其中几位,说话请留点余地吧。
楼主愿意把他的体验说出来给大家分享,这是好事啊。或许他是不太清楚为什么,或许他的优化是有问题的,大家可以在技术上进行分析,帮助他把问题搞清楚嘛。如果楼主感受到的只是打击和否定,他还会愿意与大家分享吗?各位又从讨论中收获了什么呢? |
|
返回顶楼 | |
发表时间:2008-07-25
应该是你存储过程写的有问题。
另外你用的是Oracle,不会存在存储过程锁表的问题。 |
|
返回顶楼 | |