楼主: wisdomone1

[精华] 在web网站中大量采用存储过程性能讨论

[复制链接]
论坛徽章:
15
利物浦
日期:2009-04-13 17:20:27ITPUB十周年纪念徽章
日期:2011-11-01 16:21:152011新春纪念徽章
日期:2011-02-18 11:43:322011新春纪念徽章
日期:2011-01-04 10:34:202010广州亚运会纪念徽章:空手道
日期:2010-12-28 12:55:05辩论纪念章
日期:2010-11-15 10:46:132010广州亚运会纪念徽章:帆船
日期:2010-11-12 17:46:432010广州亚运会纪念徽章:射箭
日期:2010-11-12 17:46:26ITPUB9周年纪念徽章
日期:2010-10-08 09:31:212010系统架构师大会纪念
日期:2010-09-03 16:39:57
41#
发表于 2010-6-29 21:01 | 只看该作者
这个帖子再来点碰撞+花火 基本就可以受"精"了 : )

其实未必都有那么高的并发哦,
没有那么大的并发 也就不需要去考虑得那么精细了, 精细化的应用会消耗高昂的人力 物力 财力..

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
9
生肖徽章2007版:牛
日期:2009-03-10 21:26:492010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:葡萄牙
日期:2010-02-22 14:35:242010新春纪念徽章
日期:2010-03-01 11:19:092010广州亚运会纪念徽章:射击
日期:2010-09-08 23:42:12ITPUB9周年纪念徽章
日期:2010-10-08 09:31:212010广州亚运会纪念徽章:拳击
日期:2010-10-30 00:46:582011新春纪念徽章
日期:2011-02-18 11:43:322011新春纪念徽章
日期:2011-03-01 08:49:39
42#
发表于 2010-6-29 22:06 | 只看该作者
原帖由 dap570 于 2010-6-29 21:01 发表
这个帖子再来点碰撞+花火 基本就可以受"精"了 : )

其实未必都有那么高的并发哦,
没有那么大的并发 也就不需要去考虑得那么精细了, 精细化的应用会消耗高昂的人力 物力 财力..


这句话就可以受"精"了

使用道具 举报

回复
论坛徽章:
17
2008新春纪念徽章
日期:2008-02-13 12:43:032014年新春福章
日期:2014-02-18 16:42:02优秀写手
日期:2013-12-18 09:29:13奥迪
日期:2013-09-12 15:57:04凯迪拉克
日期:2013-08-26 22:55:57红旗
日期:2013-08-15 13:57:06茶鸡蛋
日期:2013-05-29 11:38:412013年新春福章
日期:2013-02-25 14:51:24ITPUB季度 技术新星
日期:2012-02-16 14:53:162012新春纪念徽章
日期:2012-01-04 11:51:22
43#
发表于 2010-6-30 00:19 | 只看该作者
还是tom那段话吧, 能用SQL解决的不要用存储过程,能用存储过程解决的不要用java ,能用java 解决的不要用C,C都不能解决了需要考虑下是否需要实现了

大致是这样。。。

使用道具 举报

回复
论坛徽章:
1682
九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-27 15:37:10九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55玉石琵琶
日期:2014-06-26 16:52:29玉石琵琶
日期:2014-06-26 16:52:29
44#
发表于 2010-6-30 01:08 | 只看该作者
学习了。。。

使用道具 举报

回复
论坛徽章:
49
2010广州亚运会纪念徽章:台球
日期:2010-09-14 17:25:29ITPUB官方微博粉丝徽章
日期:2011-07-11 13:10:57ITPUB十周年纪念徽章
日期:2011-11-01 16:24:042012新春纪念徽章
日期:2012-03-15 14:24:252012新春纪念徽章
日期:2012-01-04 11:53:54紫蛋头
日期:2012-03-07 10:09:01生肖徽章2007版:龙
日期:2012-03-07 10:13:00蜘蛛蛋
日期:2012-04-01 11:20:46奥运会纪念徽章:艺术体操
日期:2012-08-06 09:08:41奥运会纪念徽章:艺术体操
日期:2012-08-27 17:37:53
45#
发表于 2010-6-30 09:27 | 只看该作者
原帖由 <i>wisdomone1</i> 于 2010-6-29 17:30 发表 <a href="http://www.itpub.net/redirect.php?goto=findpost&pid=16036424&ptid=1319266" target="_blank"><img src="http://www.itpub.net/images/common/back.gif" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www.itpub.net/images/common/back.gif');}" onmousewheel="return imgzoom(this);" alt="" /></a><br />

<br />

<br />

<br />
    为何数据库服务器较于应用服务器不易扩展,因为数据库扩展要作的工作 多吧,比如:前期升级测试,io压力测试,调n多参数,回退方案,而应用就是简单的添加节点就好了?<br />
<br />
我们准备上jboss 集群,这种架构又是怎么一回事呢,谢谢!
<br />

数据库的扩展成本确实比较高(贼有钱的企业除外),DB服务器永远都比APP的服务器贵。一般都考虑在应用层扩展,在应用层处理,而不考虑将DB复杂化!

使用道具 举报

回复
论坛徽章:
36
数据库板块每日发贴之星
日期:2008-06-23 01:01:58奥运会纪念徽章:足球
日期:2012-08-21 19:26:212013年新春福章
日期:2013-02-25 14:51:24蜘蛛蛋
日期:2013-05-03 17:38:25一汽
日期:2013-08-19 16:12:56保时捷
日期:2013-10-18 23:41:21阿斯顿马丁
日期:2013-11-11 14:17:47大众
日期:2013-11-17 16:50:19问答徽章
日期:2014-01-13 00:25:10马上有车
日期:2014-08-03 11:06:20
46#
 楼主| 发表于 2010-6-30 10:40 | 只看该作者
原帖由 wolfop 于 2010-6-29 14:50 发表
从应用分层的原则,大量使用存储过程导致业务逻辑分散在DB和应用服务器层,肯定不好开发维护和更新。
从性能来说,SP肯定不是最优的,我知道的案例就有某运营商原来计费批价都用SP,后来很难满足性能的问题。
总体来说,SP可以用,但要很慎重,最好只用来维护,不用于业务逻辑和支撑高并发高性能的东西。


    具体来说, 你所言的sp主要用于维护是指什么工作呢?可否具体化下,谢谢1

使用道具 举报

回复
论坛徽章:
3
2010年世界杯参赛球队:墨西哥
日期:2010-08-12 13:54:05ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:35
47#
发表于 2010-6-30 10:45 | 只看该作者
原帖由 wolfop 于 2010-6-29 17:53 发表

虽然我不知道淘宝怎么做,但是一般大并发的OLTP系统不会做这种SUM操作,不过也不一定应用层做。经常的做法是ELT或者goldengate之类的东西将OLTP数据复制到ODS/DSS系统做SUM

如果是很大规模的统计,肯定是交给数据仓库做,DB一般只提供根据主键或者或者索引的单挑或者不多的多条查询,比如某一天的交易总额你让数据库做,这对于OLTP简直就是个灾难

使用道具 举报

回复
论坛徽章:
5
2008新春纪念徽章
日期:2008-02-13 12:43:032009新春纪念徽章
日期:2009-01-04 14:52:28生肖徽章2007版:牛
日期:2009-04-03 20:55:282009日食纪念
日期:2009-07-22 09:30:002010新春纪念徽章
日期:2010-03-01 11:08:28
48#
发表于 2010-6-30 11:11 | 只看该作者
PL/SQL在功能上有不少扩展,相比较C++与sql的结合,是能够减少一些代码量。各有利弊。
但,如果能用一条sql语句,就不要用pl/sql。

使用道具 举报

回复
论坛徽章:
5
2008新春纪念徽章
日期:2008-02-13 12:43:032009新春纪念徽章
日期:2009-01-04 14:52:28生肖徽章2007版:牛
日期:2009-04-03 20:55:282009日食纪念
日期:2009-07-22 09:30:002010新春纪念徽章
日期:2010-03-01 11:08:28
49#
发表于 2010-6-30 11:29 | 只看该作者
原帖由 zhangfengh 于 2010-6-30 10:33 发表
找平衡点,要看你的数据库压力到底能达到什么程度,是否真的需要用应用层去分担数据库的压力

如果压力真的那么大,那么利用应用层也无可厚非;如果压力达不到,又何必去用应用层做数据库的事情呢

个人看法:能够用到数据库的功能的还是要尽可能的用。如果数据库仅仅作为一个容器,只是为了保存数据用,那何必用oracle呢,又要花钱买人家的软件,又要花钱买人家的服务。直接存进文本,自己处理岂不是好


尽管数据库的功能强大,但在OLTP系统里,一个有破坏性的语句能够导致其他语句运行相当缓慢,因此都会尽可能的将语句简单再简单。OLTP系统应该以用户为主要的,这是数据库在整个系统中的宗旨。
应用层相对来说容易扩展,而数据库难一些。 如果在设计时候将压力转向了数据库层面,用户和使用增长到一个数量级后,极有可能还是要回到起点去调整整个架构。何不在设计时候做到相对简单呢……

直接存到文本,当然更省钱省事!不过,这个反例没有说服力。用户怎么怎么查数据呢? 总不能让用户花几十秒甚至更久的时间去找一条数据呀。

使用道具 举报

回复
论坛徽章:
5
2010新春纪念徽章
日期:2010-03-01 11:08:292010年世界杯参赛球队:南非
日期:2010-06-20 11:17:01ITPUB9周年纪念徽章
日期:2010-10-08 09:32:272010广州亚运会纪念徽章:田径
日期:2011-01-09 00:21:452011新春纪念徽章
日期:2011-02-18 11:42:49
50#
发表于 2010-6-30 11:35 | 只看该作者

忽然看到这个帖子莫名成精了。

其实事无绝对的。
开发维护角度:看你的开发人员多少,当然也要看你的团队人员的技能构成和水平,根据个人的经验,觉得还是存储过程相比较Java的那些玩艺要容易、轻量、好管理、好沟通、也好分层。
性能角度:看你的软硬件平台能力,看你的数据量来选择架构吧,先期可以开发一个原型模块加足够的压力测试一下,个人觉得,存储过程的性能对一般的封闭系统足够了,从你的那个例子存储过程看,你的系统可能只是基于web的管理信息类系统,而不是像前面贴子里面的阿里公司那样的公众开放系统,所以扩展性的考虑不是第一位的。

[ 本帖最后由 lei 于 2010-6-30 11:36 编辑 ]

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表