我使用经典ASP,我的所有页面都会将调用(存储过程)多次转换为数据库来构建页面(报表,表单......)。 用多个记录集进行1次调用或做我正在做的事情(多次调用)是不是更好?
我知道,也许,其他语言(PHP,C#...)有更好的东西,但我的应用程序完全是用经典ASP构建的。
韩国社交协会
答案 0 :(得分:2)
与往常一样,两种方式都存在。
为了优化完成的总工作量,正如Blam所说,你应该做一个大呼叫来减少往返时间。不仅是网络延迟,还包括汇总数据包和处理套接字的所有网络开销。
但是,这意味着在所有数据库访问完成之前,您的页面不会获取任何数据。因此,为了缩短响应时间,您可能需要考虑在有一些数据库调用的情况下进行管道,但是在进行其他调用时也要处理一些数据库结果。这是一个相当不寻常的情况,因为大部分时间,处理相当轻。
分解存储过程的常见原因是重用。如果您有一个大的存储过程,然后重用存储过程的任何部分,则必须重用 all 。 (除非您在存储过程中执行可能因查询计划优化而损坏性能的分支和条件。)如果您有多个页面可以共享某些代码,则可能需要将其分解。
在典型的Web场中,数据库和页面服务器非常接近,因此网络延迟也不算太差。我描述了一些生产负载,有几个地方我们连续进行多个数据库调用,10个数据库调用的时间不到1毫秒。
如果您的数据库网络延迟很重要,那么并行执行数据库调用可能是值得的。这样,您可以破坏存储过程以重用代码,而不用担心网络延迟。
作为一般规则,让您的代码干净漂亮而不用担心性能。在问题上投入更多硬件,直到你无法通过支付更多钱来加快速度。通常,硬件比开发人员便宜很多。