1

我使用经典 ASP,我的所有页面都对数据库进行多次调用(存储过程)以构建页面(报告、表单......)。使用多个记录集进行 1 次调用还是执行我正在做的事情(多次调用)更好?

我知道,也许其他语言(PHP、C#...)有更好的东西,但我的应用程序完全是用 Classic ASP 构建的。

Tks

4

1 回答 1

2

与往常一样,这两种方式都有一个案例。

正如 Blam 所说,要优化完成的总工作量,您应该进行一次大调用以减少往返时间。不仅针对网络延迟,还针对将数据包放在一起和处理套接字的所有网络开销。

但是,这意味着在完成所有数据库访问之前,您的页面不会获得任何数据。因此,为了提高响应时间,您可能需要考虑在有一些数据库调用的情况下创建一个管道,但您也在处理一些数据库结果,同时进行其他调用。这是一个相当不寻常的情况,因为大多数时候,处理相当轻松。

分解存储过程的一个常见原因是为了重用。如果你有一个大的存储过程,那么要重用存储过程的任何部分,你必须重用它的所有部分。(除非您在存储过程中使用杂乱的分支和条件,这可能会因查询计划优化而损害性能。)如果您有多个可以共享某些代码的页面,您可能希望将其分解。

在典型的网络场中,数据库和页面服务器非常接近,因此网络延迟并不算太糟糕。我分析了我们的一些生产负载,并且有几个地方我们连续进行多个数据库调用,10 个数据库调用花费的时间不到 1 毫秒。

如果您的数据库网络延迟很长,那么并行执行数据库调用可能是值得的。这样,您可以分解存储过程以供代码重用,而不必担心网络延迟。

作为一般规则,让你的代码干净漂亮,而不用担心性能。在问题上投入更多的硬件,直到您无法通过支付更多的钱来使其更快。通常,硬件比开发人员便宜很多。

于 2013-08-15T03:48:56.633 回答