存储过程的最大好处是什么?

Nwing 2006-08-23 04:04:28
存储过程的最大好处是什么?
...全文
477 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lutao050306 2007-02-15
  • 打赏
  • 举报
回复
对于大型的比较复杂的项目应用一般都用到存储过程.
这种开发交给数据库开发工程师完成.程序中就可以少用比较复杂的SQL语句.(有一些业务流程单纯的SQL语句也是不可能实现的)
lutao050306 2007-02-15
  • 打赏
  • 举报
回复
使用存储过程的应用程序具有下列优点:
A减少了客户机与服务器之间的网络使用率
客户机应用程序将控制权传送到数据库服务器上的存储过程。存储过程在数据库服务器上执行中间处理,而不需要在网络中传送不需要的数据。将只传送客户机应用程序真正需要的记录。使用存储过程能够减少网络使用率并获得更好的总体性能。
一次执行一个 SQL 语句的应用程序通常在执行每个 SQL 语句都要跨网络两次。存储过程可以将 SQL 语句集中在一起,从而使得对于每一组 SQL 语句只需要跨网络两次。在存储过程中集中在一起的 SQL 语句越多,网络的使用率和数据库锁定保持的时间就越低。通过减少网络使用率和数据库锁定的时间长短,就可以提高网络的总体性能并减少锁定争用问题。

但是,处理大量 SQL 生成的数据但只向用户显示一部分数据的应用程序可能会使网络使用率过高,因为在进行最终处理之前所有数据都将返回到客户机。存储过程可以在服务器上进行处理并且只将必需的数据传送给客户机,从而减少了网络的使用率。

增强了硬件和软件功能
使用存储过程的应用程序对服务器上增加的内存和磁盘空间具有存取权。这些应用程序还对只安装在数据库服务器上的软件具有存取权。可以在具有足够内存和处理器的机器之间分发可执行的业务逻辑。
提高了安全性
通过使使用静态 SQL 的存储过程包含数据库特权,数据库管理员(DBA)可以提高安全性。构建存储过程的 DBA 或开发者必须具有存储过程需要的数据库特权。调用存储过程的客户机应用程序的用户不需要此类特权。这可以减少需要特权的用户数。
减少了开发成本并且提高了可靠性
在数据库应用程序环境中,许多任务是重复的。重复任务可能包括:返回固定的一组数据,或者对数据库执行相同的多个请求。通过重用一个公共过程,存储过程就可以高效地解决这些重复情况。
集中处理公共例程的安全性、管理和维护
通过在服务器上的某个位置管理共享逻辑,就可以简化安全性、管理和维护。客户机应用程序可以调用一些存储过程,这些存储过程运行需要很少处理或者不需要附加处理的 SQL 查询。
Nwing 2007-02-15
  • 打赏
  • 举报
回复
多谢lutao050306() 讲得这么详细!
圣殿骑士18 2006-08-23
  • 打赏
  • 举报
回复
感觉集成比较好,业务处理清晰,复用性不错,客户端程序也可以比较简约。
Nwings 2006-08-23
  • 打赏
  • 举报
回复
使用 SQL Server 中的存储过程而不使用存储在客户计算机本地的 Transact-SQL 程序的优势有:

允许模块化程序设计。
只需创建过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。

允许更快执行。
如果某操作需要大量 Transact-SQL 代码或需重复执行,存储过程将比 Transact-SQL 批代码的执行要快。将在创建存储过程时对其进行分析和优化,并可在首次执行该过程后使用该过程的内存中版本。每次运行 Transact-SQL 语句时,都要从客户端重复发送,并且在 SQL Server 每次执行这些语句时,都要对其进行编译和优化。

减少网络流量。
一个需要数百行 Transact-SQL 代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。

可作为安全机制使用。
即使对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限。

Nwing 2006-08-23
  • 打赏
  • 举报
回复
多谢诸位!
Nwings 2006-08-23
  • 打赏
  • 举报
回复
怎么不利于维护?
直接改存储过程,就可对数据生成修改
免得到各个客户机上更新程序,麻烦!
gjz_1209 2006-08-23
  • 打赏
  • 举报
回复
存储过程的执行都是在服务器上进行,节约网络开销。
polestarxu 2006-08-23
  • 打赏
  • 举报
回复
但不利于维护。
Nwings 2006-08-23
  • 打赏
  • 举报
回复
执行存储过程相当于编译执行,而普通的SQL语句调用则相当于解释执行

好处一大把.
Nwings 2006-08-23
  • 打赏
  • 举报
回复
高开发和执行效率,还具有最高层次的复用性,可以适用于连接该数据库的所有项目。

752

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧