楼主: wisdomone1

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

[复制链接]
论坛徽章:
26
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282012新春纪念徽章
日期:2012-01-04 11:49:542013年新春福章
日期:2013-02-25 14:51:24夏利
日期:2013-08-13 23:25:29优秀写手
日期:2013-12-18 09:29:092014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11蓝色妖姬
日期:2015-03-19 09:37:00ITPUB年度最佳技术原创精华奖
日期:2015-03-19 09:43:24
111#
发表于 2011-1-7 22:55 | 只看该作者
原帖由 horizon 于 2010-6-30 14:23 发表
用存储过程移植会出现大问题,可能要重写存储过程也说不定
但应用程序改动会少


用存储过程移植会大大方便;
  1.大部分系统,前台可能,今天用java,明天用c#,后天用php,或者是多种前台程序混合成一个系统;但是数据库不会轻易变;
在这种情况下,如果业务实现都用存储过程实现,那么移植只是修改一些外围的调用程序,而且就算这些前台开发者的水平烂,
但是存储过程逻辑严谨的话,不会产生异常的逻辑数据;

  2.存储过程,能够被任何前台语言调用,能够在任何操作系统下使用;


  3. 存储过程修改很方便,不用发布,就是脚本重新编译下而已; 现在不是流行动态脚本语言吗? 存储过程不就达到这个效果吗;


4.先不考虑运行效率;光开发效率来说,存储过程开发速度最快,因为只要是开发人员,是人都懂SQL, 对于oracle,PLSQL很容易学的,理论上一天就能学会;
  而那么多的前台语言,要深入进去,那个不需要3年5载; 而存储过程写的很好的话,半年一年就很强了;


5.不要把写复杂SQL,写存储过程当做是DBA的事情,放眼望去,95%的人都是做开发的,单纯的做DBA的人很少,而且时代发展,就算是强人DBA,必然有很强的开发能力;
就像牛顿,物理上取得了很大的成就,必然有很强的数学能力做基础。
是人都会写SQL, 不会写SQL还能做开发,尤其是面向数据库为主的应用系统;
  凡是资深的开发人员,一般都会有某一两门很擅长的前台开发语言技能;但都不会缺少最基本的技能,就是很强的SQL开发能力,如果SQL很强,存储过程能力自然也会很强;

[ 本帖最后由 qingyun 于 2011-1-7 23:12 编辑 ]

使用道具 举报

回复
论坛徽章:
1
奥运会纪念徽章:乒乓球
日期:2008-10-24 13:13:51
112#
发表于 2011-2-18 17:02 | 只看该作者
使用存储过程还是sql,这个要看具体的业务需求,适合的才好
thomas kyte建议建议去看看

使用道具 举报

回复
论坛徽章:
11
授权会员
日期:2006-05-12 15:15:27数据库板块每日发贴之星
日期:2006-05-19 01:01:35ITPUB元老
日期:2006-05-19 08:58:40操作系统板块每日发贴之星
日期:2006-06-05 01:01:57会员2007贡献徽章
日期:2007-09-26 18:42:10ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412014系统架构师大会纪念章
日期:2014-08-28 15:15:37技术图书徽章
日期:2014-09-09 11:11:10
113#
发表于 2011-2-18 18:07 | 只看该作者
这个其实没太多争论余地吧。

如果是典型的WEB引用,一般没必要用存储过程,OLTP类型的事务一般都很简单,涉及数据量小,而且前端用户基本都是通过WEB界面操作,不可能直接输SQL语句吧,至于所谓绑定变量以复用SQL语句之类问题,应该可以在应用层实现,要是前端应用都是硬编码那怎么也没办法的;

如果是OLAP或者DW这类大数据量处理,那PL/SQL用的就比较多了。因为1、可能有比较复杂的处理,单条SQL逻辑实现不了;2、对于大数据量,直接用单挑语句可能超出系统硬件能力,搞点回滚段过旧之类问题出来;

使用道具 举报

回复
论坛徽章:
8
数据库板块每日发贴之星
日期:2009-06-12 01:01:02数据库板块每日发贴之星
日期:2009-06-21 01:01:01ITPUB9周年纪念徽章
日期:2010-10-08 09:32:272010广州亚运会纪念徽章:游泳
日期:2010-11-12 16:42:092011新春纪念徽章
日期:2011-02-18 11:42:502010广州亚运会纪念徽章:三项全能
日期:2011-02-26 13:07:50咸鸭蛋
日期:2011-08-30 15:51:05ITPUB十周年纪念徽章
日期:2011-11-01 16:25:22
114#
发表于 2011-2-27 17:37 | 只看该作者
合适的事物用在合适的地方合适的时间,哈哈。

使用道具 举报

回复
论坛徽章:
0
115#
发表于 2011-2-28 16:53 | 只看该作者
小弟也关注一下.

使用道具 举报

回复
论坛徽章:
6
奥运会纪念徽章:现代五项
日期:2008-10-24 13:26:492009新春纪念徽章
日期:2009-01-04 14:52:28参与2009年中国云计算大会纪念
日期:2009-06-05 10:02:28生肖徽章2007版:鸡
日期:2009-09-08 16:08:51ITPUB8周年纪念徽章
日期:2009-09-27 10:21:22ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51
116#
发表于 2011-3-1 16:38 | 只看该作者
mark,学习了

使用道具 举报

回复
论坛徽章:
0
117#
发表于 2011-3-17 17:34 | 只看该作者
本人总结出以下几点,是存储过程比sql要好的地方
1、        存储过程可以用流语句编写,具有很大的灵活性,如果业务逻辑要完成一个很复杂的数据库操作,那么使用存储过程,你只需要在应用端输入参数直接调用就行,那岂不是很方便?但是你要通过sql的话,那就不知道要定义多少个String了,然后通过jdbc与数据库进行通讯。
2、        使用存储过程可以降低网络的通信量,当你使用存储过程时,jdbc完成的只是对存储过程的调用,而使用sql语句时,每条操作语句都要和数据库进行一次通讯,那不但会增加应用服务器的压力,而且大大增加了网络通讯量。
3、        在运行存储过程之前,数据库已经对存储过程进行了预编译,并给出了优化方案。所以他会改善了sql语句的性能
4、        存储过程可以保证数据的安全性和完整性。安全性就是使没有权限的用户间接地存取数据,完整性就是可以使一组相关的动作一起发生,这个有点类似于事物的概念。

使用道具 举报

回复
论坛徽章:
10
授权会员
日期:2007-08-09 15:37:26会员2007贡献徽章
日期:2007-09-26 18:42:10ITPUB元老
日期:2007-10-15 21:12:09ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28灰彻蛋
日期:2013-06-24 14:20:02
118#
发表于 2011-3-17 18:24 | 只看该作者
看用户量啦,上十万百万千万用户量的话,你的数据库顶不住地,计算能力消耗太大,只能通过web服务去分散压力

使用道具 举报

回复
论坛徽章:
56
20周年集字徽章-年	
日期:2020-10-28 15:00:352012新春纪念徽章
日期:2012-02-13 15:08:092012新春纪念徽章
日期:2012-02-13 15:08:09ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28管理团队成员
日期:2011-05-07 01:45:082010广州亚运会纪念徽章:摔跤
日期:2011-03-16 15:58:362011新春纪念徽章
日期:2011-01-25 15:41:01设计板块每日发贴之星
日期:2010-10-11 01:03:542010新春纪念徽章
日期:2010-03-01 11:19:53生肖徽章2007版:牛
日期:2009-09-10 11:14:59
119#
发表于 2011-3-25 10:23 | 只看该作者
学习了,

使用道具 举报

回复
论坛徽章:
2
ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04复活蛋
日期:2013-02-16 15:29:55
120#
发表于 2011-3-25 15:50 | 只看该作者
这个问题争论好像是很常有的```开发人员与数据架构人员。
论执行效力来说,逻辑让页面来执行会快一点,
但数据架构师通常认为不能浪费了数据库的强大能力。

使用道具 举报

回复

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

本版积分规则 发表回复

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