论坛首页 综合技术论坛

探讨用存储过程的优劣

浏览 84563 次
该帖已经被评为良好帖
作者 正文
   发表时间:2011-01-24  
lobbychmd 写道
还有一点。svn 等代码管理工具是一个 C/S 的结构。 存储在服务器,副本运行在本地。

而存储过程是运行在服务器,所以比较容易发生更改的冲突。


生产环境里的sp能随便改吗?
本地改完测试OK之后,更新到svn服务器,然后生产环境从svn取最新版本,更新生产数据库,能有什么更改冲突呢?
如果你非得直接改生产环境里的sp,我只能说你们管理有纰漏。
0 请登录后投票
   发表时间:2011-01-24  
liuchuan98 写道
说说存储过程的缺点吧:
1.运维复杂,业务变化导致的存储过程变化太难受,个人的切身体会,特别是存储过程长的时候:一.可读性太差,如果中间被人改个两三次,就更难受了,如果涉及到三、四个表,不懂业务的就很难读懂了;二.可复用性差,这是过程代码的典型劣势,不是说它没有复用性,但它的复用性和面向对象比起来是差一大截的;三.可维护性差,版本控制很难搞,不像代码环境能集成版本控制软件;且主、备和开发环境的不能随时同步。
2.不能使用对象缓存,也就是说客户请求除了少部分通过客户端缓存和页面缓存,大部分请求都直接捅到数据库了,浪费了利用应用服务器资源的机会。


1、如果sp非常复杂,可读性确实不好,同样,java代码如果也复杂呢?可读性一样会下降。就几百行代码而言,sp恰恰不差,稍有经验的人写过程语言的可读性比OO要更直观。
2、sp的可复用性,和java代码的可复用性,不能放在一起比较。难道你要在sp里写OO架构?
3、版本控制我就不说了。
4、对象缓存不能用,那是可能因为你没用过。sp直接放数据到缓存里,比起从sql到java代码,再由java代码放入缓存哪个更快?
0 请登录后投票
   发表时间:2011-01-24  
glovebx 写道
lobbychmd 写道
还有一点。svn 等代码管理工具是一个 C/S 的结构。 存储在服务器,副本运行在本地。

而存储过程是运行在服务器,所以比较容易发生更改的冲突。


生产环境里的sp能随便改吗?
本地改完测试OK之后,更新到svn服务器,然后生产环境从svn取最新版本,更新生产数据库,能有什么更改冲突呢?
如果你非得直接改生产环境里的sp,我只能说你们管理有纰漏。


说的就是开发环境的sp,因为你总要更新到数据库才能测试嘛。
0 请登录后投票
   发表时间:2011-01-25  
lobbychmd 写道
glovebx 写道
lobbychmd 写道
还有一点。svn 等代码管理工具是一个 C/S 的结构。 存储在服务器,副本运行在本地。

而存储过程是运行在服务器,所以比较容易发生更改的冲突。


生产环境里的sp能随便改吗?
本地改完测试OK之后,更新到svn服务器,然后生产环境从svn取最新版本,更新生产数据库,能有什么更改冲突呢?
如果你非得直接改生产环境里的sp,我只能说你们管理有纰漏。


说的就是开发环境的sp,因为你总要更新到数据库才能测试嘛。



就是hibernate,单元测试完,还是要放到容器中跑一跑才放心。
0 请登录后投票
   发表时间:2011-01-25   最后修改:2011-01-25
lobbychmd 写道
可读性差可以这么理解,存储过程是一种面向过程的脚本语言。 从语言发展的角度来开确实比OO 可读性差一些。

另外貌似sp 不太好做自定义函数。因此很多都是一大段代码到底,这也是可读性差的一个体现。不过我没用过 oracle.


另外貌似sp 不太好做自定义函数。因此很多都是一大段代码到底,这也是可读性差的一个体现。不过我没用过 oracle.

无知啊!!
连sp不太好做自定义函数都说得出口。
原来你们说的sp可读性不好是你们一段写到底。
原来你们说的sp版本管理很难是因为你们不放到cvs里管理。
我现在严肃地觉得你们这些反sp的人水平有点低。

我就不明白了,你用都没用过,你怎么就能像模像样的上来批判一通呢?

0 请登录后投票
   发表时间:2011-01-25  
lobbychmd 写道
glovebx 写道
lobbychmd 写道
还有一点。svn 等代码管理工具是一个 C/S 的结构。 存储在服务器,副本运行在本地。

而存储过程是运行在服务器,所以比较容易发生更改的冲突。


生产环境里的sp能随便改吗?
本地改完测试OK之后,更新到svn服务器,然后生产环境从svn取最新版本,更新生产数据库,能有什么更改冲突呢?
如果你非得直接改生产环境里的sp,我只能说你们管理有纰漏。


说的就是开发环境的sp,因为你总要更新到数据库才能测试嘛。


噢,在开发环境,你的Java代码难道就不要上传到到weblogic里测一下吗?
真是太搞笑了。
0 请登录后投票
   发表时间:2011-01-25  
lobbychmd 写道
还有一点。svn 等代码管理工具是一个 C/S 的结构。 存储在服务器,副本运行在本地。

而存储过程是运行在服务器,所以比较容易发生更改的冲突。


怎么看也没看出这里边的逻辑来。
0 请登录后投票
   发表时间:2011-01-25  
ironsabre 写道
lobbychmd 写道
可读性差可以这么理解,存储过程是一种面向过程的脚本语言。 从语言发展的角度来开确实比OO 可读性差一些。

另外貌似sp 不太好做自定义函数。因此很多都是一大段代码到底,这也是可读性差的一个体现。不过我没用过 oracle.


另外貌似sp 不太好做自定义函数。因此很多都是一大段代码到底,这也是可读性差的一个体现。不过我没用过 oracle.

无知啊!!
连sp不太好做自定义函数都说得出口。
原来你们说的sp可读性不好是你们一段写到底。
原来你们说的sp版本管理很难是因为你们不放到cvs里管理。
我现在严肃地觉得你们这些反sp的人水平有点低。

我就不明白了,你用都没用过,你怎么就能像模像样的上来批判一通呢?



我从来没批判过什么,只是分析一些现状, 因为这个世界有很多种数据库,很多种开发语言,很多种开发方式.
0 请登录后投票
   发表时间:2011-01-25  
其实正常人读过程代码比oo代码要容易多,如果过程代码都读不懂的话,我加上一些oo技巧后你就等着抓头吧。

为了照顾某些人,我还是强调一下吧。过程代码不等于一个sp从头写到底。ok?
linux就是用过程语言c写出来的,你不会认为他们就一个方法吧?

我现在突然发现,上面很多反sp的人,他们大多数人应该是没有在严肃的环境中真正用过sp的。也许就是照着书上写过一个例子。
0 请登录后投票
   发表时间:2011-01-25  
同意楼上的观点,存储过程对于大量数据的处理能力是非常强的。
真正使用过存储过程的人应该很清楚。
但是存储过程也会带来一个很大的问题----数据库瓶颈,这点也是使用存储过程必须考虑的一个问题。
存储过程能消耗你大量的cpu资源和内存资源,而且写的不好的存储过程会长时间占用连接,长时间等待某些资源而锁定其他的资源,从而很容易造成系统阻塞。所以存储过程尽量写的简短,少用临时表。
0 请登录后投票
论坛首页 综合技术版

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