WEB开发网
开发学院软件开发VC 为.net开发者提供的一份关于存储过程的评论 阅读

为.net开发者提供的一份关于存储过程的评论

 2006-07-23 11:17:50 来源:WEB开发网   
核心提示: 性能在查询时,这些缓存中的执行序列可以提高存储过程的性能,为.net开发者提供的一份关于存储过程的评论(2),然而,在最近的两个SQL Server版本中,而不是存储过程,至少在最新的Yukon发布之前,所有的T-SQL语句批处理都被以执行序列的形式保存在缓存中,而不管它是否存在于存储过程

性能

在查询时,这些缓存中的执行序列可以提高存储过程的性能。然而,在最近的两个SQL Server版本中,所有的T-SQL语句批处理都被以执行序列的形式保存在缓存中,而不管它是否存在于存储过程中。因此,在基于此特性上的性能的提高不再是存储过程的卖点。任何采用静态(不经常改变)语法的T-SQL批处理被频繁地提交,以防止它在缓存中的执行序列因为超过内存生命期而消失,这样做同样可以得到很高的性能。注意这里“静态”很 关键,因为即使无关紧要的变化(例如注释的改变)都会导致不与缓存中的执行序列进行匹配。从而也就导致了执行序列的无法重用。

可是,存储过程仍旧有它的优点,利用它可以减少网络的数据传输量。你只需要发送如下的指令:

EXECUTE stored_proc_name

便可以轻松地执行一系列复杂的操作,而不是那些传统的冗长的T-SQL语句。一个设计良好的存储过程可以显著减少客户端与服务器端的往返通讯,甚至可以压缩至一次调用。

另外,使用远程调用(RPC)服务器端的存储过程可以提高执行序列的重用性,从而提高性能。当你使用一个CommandType为StoredProcedure的SqlCommand对象时,存储过程将通过远程调用(RPC)被执行。远程调用排列好参数并调用服务器端的存储过程,它使服务器引擎很容易找到与之匹配的执行序列并方便地提供已经更新的参数值。最后一件需要考虑的事情是,当你准备应用存储过程提高程序的性能时你是否充分发挥了T-SQL的力量。考虑一下你打算怎样操作这些数据。

  • 1、你是在做一些基于数据集的操作呢,还是其它一些T-SQL已经支持的很好的操作?如果是这样,那么存储过程是一个不错的选择,虽然直接编写查询语句也可以做到。
  • 2、你是在做一些基于数据行的操作呢,还是复杂的字符串操作?如果是这样的话,那么你可以重新考虑直接用T-SQL语句来处理,而不是存储过程。至少在最新的Yukon发布之前,以及合理地与公共语言运行时集成之前是这样的。
  • 可维护性与共性提取

    上一页  1 2 3 4 5 6 7  下一页

    Tags:net 开发者 提供

    编辑录入:爽爽 [复制链接] [打 印]
    赞助商链接