我有一个 Web 应用程序,其中 Web 服务器和 SQL Server 2008 数据库位于同一服务器场中的不同盒子上。
如果我采用一个整体存储过程并将其分解为几个较小的存储过程,从而使客户端代码负责调用多个存储过程而不仅仅是一个,我会注意到我的 Web 应用程序的性能会受到显着影响吗?
附加背景信息:
我有一个包含数百行代码的存储过程,其中包含决策逻辑、更新语句,最后是一个将一组数据返回给客户端的选择语句。
我需要在调用组件 DLL 的客户端代码(从这个意义上说,客户端代码是调用数据库服务器的 ASP Web 服务器)中插入一个功能。但是,存储过程正在更新记录集并在同一个调用中返回更新的数据,理想情况下,我的代码需要在调用决策逻辑和更新语句之后,但在数据返回到客户端之前调用。
为了让这个功能发挥作用,我可能不得不将现有的存储过程分成至少两部分:一个更新数据库的存储过程,另一个从数据库中检索数据。然后我会在这些存储的过程调用之间插入我的新代码。
当我看到这个问题时,我不禁想到,从代码维护的角度来看,最好将我所有的更新和选择语句隔离到瘦存储过程中,并将业务逻辑留给客户端代码。这样,每当我需要在我的客户端代码中插入功能或决策逻辑时,我需要做的就是更改客户端代码,而不是修改一个巨大的存储过程。
尽管从代码维护的角度来看,使用精简存储过程可能会更好,但是通过增加访问数据库的次数,我会遇到多大的性能问题?数据的最终结果是相同的,但我更频繁地接触数据库。当扩展应用程序以满足需求时,这种方法如何影响性能?
我不是一个将性能优化置于一切之上的人,尤其是当它影响代码维护时,但我不想在 Web 应用程序必须扩展时让自己陷入困境并造成头痛。