2

情况是这样的...

我们在位置 A 有一个本地开发服务器,在那里我们构建了所有的 aspx 页面。我们的数据库也位于位置 A。

在开发服务器上测试我们的文件时,我们的查询在 1 秒内运行得最快。

我们刚刚将文件移动到位于位置 B 的实时服务器(数据库仍在位置 A),现在查询所需的时间比开发服务器长 5-10 倍。位置 A 位于东英吉利,位置 B 位于伦敦,相距约 100 英里。

同样在开发服务器和实时服务器上,运行的第一个查询比之后的其余查询花费的时间要长得多。

任何想法可能导致缓慢?

编辑

我已经打开了几个页面的跟踪,似乎 End Load 是所有方法中时间最长的,但我不确定为什么

不幸的是,我也无法访问我们的外部服务器来安装 SSMS 或 Oracle 开发人员来测试任何查询。

4

1 回答 1

1

“运行的第一个查询比之后的其余查询花费的时间要长得多。”

这就是缓存的效果。第一个查询付出了物理 IO 的代价。后续查询受益于查找已经在缓存中的相关记录,无论是数据库缓冲区缓存还是其他一些操作系统或架构缓冲区。

至于两种环境在性能上的差异,大概是这样的:

“相距大约 100 英里”

这两个位置之间的网络连接很可能会限制数据传输。假设它是私人连接,您需要与您的网络管理员交谈。如果您使用的是公共基础设施,那么您的选择是有限的。


“似乎 End Load 是所有方法中时间最长的”

好的,所以我不是 ASPX 专家(我在这里是为了 [oracle] 标签),但是一些简单的搜索显示了几个线程,这表明它可能是“用户控件”,因为这些线程在 End Load 事件之前触发. 例如this other SO question

于 2013-03-27T12:29:50.747 回答