.NET通过网络访问SQL比本地更快 - 嗯,为什么



我有一个不寻常的问题,因为我的一台服务器的性能要比其他所有服务器都更好,而且我想知道为什么 - 这是这样我也可以使其他人的工作:-)

这是我(简化的)方案:我有一个SQL Server 2012 Box,这是我们的生产环境 - 我们称此产品为产品。我创建了一个.NET工具,该工具一遍又一遍地运行一些查询。如果我在服务器本身上与本地数据库进行交谈,则我的响应时间为4到20毫秒的简单查询,对于更复杂的查询,我会在589和731 ms之间获得4到20 ms的响应时间。

。 。

我们还有另一个SQL Server 2012框的相同规格 - 我们称此雄鹿。如果我在此框上运行相同的工具,请连接到prod数据库(即相同的代码,相同的连接字符串等),我将获得简单查询的0到1 ms之间的响应时间,而更复杂的查询的响应时间为109至133ms,即明显更好。

我们有一个相同规格的第三SQL Server 2012框 - 我们称之为此测试。同样,运行连接到产品的相同工具,我分别获得4到15之间的响应时间和600至800 ms。

实际上,模式是,如果我在任何服务器(或客户端)上运行此工具,除了我们的actag环境外,时间差不多。只是雄鹿可以执行所有其他环境,我真的很想知道为什么!

如果我在ssms中运行查询,那么它们都是表现的(即非常快,就像人们期望的那样)。

因此,似乎在大多数盒子上,从.NET访问数据库都有一个开销,除了我们的stag服务器,我希望我们所有的服务器都具有这种性能。

我检查过的东西,所有这些似乎都匹配了:

  • SQL客户端和服务器协议和配置
  • 基础硬件(它们都在相同的VSPHERE基础架构上运行)
  • .NET框架版本
  • AV版本和策略应用

我不知所措,知道还能检查什么 - 其他人可以提出任何建议吗?

谢谢

标记

对 - 我终于对此进行了跟踪,这不是很好,但至少我有一致性。我们在计算时间安排的工具的逻辑上遇到了错误 - 我们使用了timespan.tickspermillisecond,由于某种原因,秒表。在我们的一台服务器上,频率有所不同 8-@@@@@@

切换到stopwatch.startnew(),然后停止()并使用eLapsedMilliseConds给我们正确的答案。

感谢Jeroen的所有帮助 - 至少下次我有表演问题,我可以提出您的建议并首先使用这些建议。

相关内容

  • 没有找到相关文章

最新更新