精华帖 (2) :: 良好帖 (2) :: 新手帖 (15) :: 隐藏帖 (5)
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-25
对于业务逻辑放在存储过程中的情况,目前比较有市场的看法是: “不要把业务逻辑放在DB中,除非有性能问题” 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-07-25
楼主能否再深入一点说说是如何优化的?
比如为什么计算所有酒店的一天价格时,使用存储过程要10多分钟,而优化后只要不足一分钟?为什么原来会有这样的瓶颈?为什么优化后瓶颈消除了? |
|
返回顶楼 | |
发表时间:2008-07-25
没看出楼主采用了什么优化手段,只是把存储过程用Java重写了一遍效率就上来了?好像关键部分被掐了
|
|
返回顶楼 | |
发表时间:2008-07-25
关于存储过程,我们没有专门的DBA进行优化,我只能从自己理解的角度去思考一下:
1、数据量:价格计算过程涉及到从4、5个表中取数据,其中有两个表的数据量较大(几百W) 2、因为存储过程的技术限制,选择和归并是需要花些时间的。而程序可以优化这些过程 3、DB表锁机制,存储过程占用表锁的时间相对长 4、将时间长的存储过程时间,化了简单的DB表查询,压力转移到AP端(事实上压力对DB和AP优化前后都没有什么问题) |
|
返回顶楼 | |
发表时间:2008-07-25
把存储过程用java重写,并不是简单的重写。
原来存储过程的步骤,如果用java直接按那个思路写,效率可能会相当差。
只是用面向对象的方式重新实现一些存储过程的逻辑而已,至于性能的优化,在优化前我们并没有太大的把握,只是觉得性能出现问题了,DB上暂时又没有什么好办法可以提升(实际上我们也试了一些方法,比如存储过程中调试,加索引等但都没有实质提升),用java实现应该是一条路。
|
|
返回顶楼 | |
发表时间:2008-07-25
乱78糟的,看着我头疼!
有话不能好好说啊,ok? |
|
返回顶楼 | |
发表时间:2008-07-25
LS的,说话文明点!
不是我不想好好说,是提交的时候把回车给吃掉了! |
|
返回顶楼 | |
发表时间:2008-07-25
hyhongyong 写道 LS的,说话文明点!
不是我不想好好说,是提交的时候把回车给吃掉了! 得了吧你,别装了! 那你说为什么计算所有酒店的一天价格时,使用存储过程要10多分钟,而优化后只要不足一分钟?为什么原来会有这样的瓶颈?为什么优化后瓶颈消除了? |
|
返回顶楼 | |
发表时间:2008-07-25
得确,只有在每行有复杂的非数据库类计算时,java代码才有可能会比存储过程高效
另外,你这个优化的前提必须是这个存储过程没有设计问题,否则,这个比较也没有用 |
|
返回顶楼 | |
发表时间:2008-07-25
hyhongyong 写道 把存储过程用java重写,并不是简单的重写。原来存储过程的步骤,如果用java直接按那个思路写,效率可能会相当差。只是用面向对象的方式重新实现一些存储过程的逻辑而已,至于性能的优化,在优化前我们并没有太大的把握,只是觉得性能出现问题了,DB上暂时又没有什么好办法可以提升(实际上我们也试了一些方法,比如存储过程中调试,加索引等但都没有实质提升),用java实现应该是一条路。
|
|
返回顶楼 | |