【问题标题】:SQL Server lots of overhead from network communication?SQL Server 网络通信的大量开销?
【发布时间】:2012-04-04 06:45:58
【问题描述】:

我们有一个“服务器”,在机器 A 上配置了 SQL Server 2008 R2。在同一个 LAN 中,我们有机器 B,它是一台硬件相同但没有安装 SQL Server 的机器。

我们有一组单元测试,它们从数据库中请求一些记录并将它们映射到正确的 CLR 对象。当这个单元测试从机器 A 和 SQL Server 运行时,测试在 5 毫秒内运行。

如果我将测试代码复制到机器 b 并运行它,测试总共需要大约 50 毫秒,如果这只是由网络开销引起的,那么这将是一个显着增加。

执行的查询不会发送大量数据(列中没有 blobs/xml 数据),总数据约为几 KB。使用IDataReader 读取数据。我们使用一个打开一次的连接,用于向数据库发起大约 24 个查询。

我可以尝试任何提示/技巧来测试是否真的是网络开销减慢了执行速度?我感觉有些东西在 SQL Server 中没有正确配置。

【问题讨论】:

  • 我不确定您在这里期望什么答案:您通过网络执行的任何操作都会比在本地执行的操作慢得多,因此这本身并不令人惊讶。令人惊讶的是,您试图在单元测试执行中节省 45 毫秒。如果您可以解释为什么需要这样做,那么有人可能会提出建议。您可能还想尝试 dba 或 serverfault 站点,因为这似乎不是编程问题。
  • @Pondlife,感谢您的帮助。我确信网络开销可能是问题所在,但我想知道我是否没有遗漏一些东西和/或是否有办法可以分析这样的事情。将其移至 serverfault/dba 可能是个好主意,但我不知道该怎么做。
  • 您实际上并没有弄清楚“问题”是什么,因为大多数人不会抱怨他们的单元测试需要 45 毫秒才能执行 :)
  • 问题是本地 sql server 在 5ms 内运行测试和远程 sql server 运行时间大约是 10 倍之间的差异。
  • 恐怕我仍然没有看到问题:很明显,任何操作通过网络执行的时间都比本地操作要长。到目前为止,您还没有证明它需要 10 倍的时间,只是它需要额外的 45 毫秒。远程1s手术需要多长时间? 1.045 秒还是 10 秒?我不想听起来不屑一顾,但重要的是事情要尽可能快地发生,而不是尽可能快,这意味着调查这几乎肯定不值得你花时间。当然,除非你的动机是单纯的好奇心。无论哪种方式,serverfault 可能是更好的地方。

标签: sql-server performance sql-server-2008 networking


【解决方案1】:

这听起来像是正常的行为,只是网络延迟......为了确认这些数字是否合理,从另一个服务器 ping 一个服务器,如果这报告往返时间达到两位数毫秒,而 ping您的本地计算机应该在 1 毫秒内完成...我同意 Pondlife,这听起来像是一个健康的 LAN 课程的标准。

【讨论】:

  • 我已经对服务器机器进行了 ping 操作,它在大约 1 毫秒的时间内进入,有时会低于有时 1 毫秒。我的问题是我无法衡量为什么会发生这种情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-28
  • 2015-06-02
  • 1970-01-01
  • 1970-01-01
  • 2015-03-21
  • 2016-10-07
相关资源
最近更新 更多