SQL Server 2005和.NET之间的延迟

时间:2009-08-17 09:23:19

标签: .net sql-server latency

此问题是对previous asked question的跟进。

我写了一个看起来像这样的简单程序。

string s;
do
{
  using (SqlConnection conn = new SqlConnection("POOLEDCONN"))
  {
    using (SqlCommand cmd = new SqlCommand("", conn))
    {
        s = (string) cmd.ExecuteScalar();
        Code2IncrementPerfomanceCounter
    }
  }    
} while (!string.IsNullOrEmpty(s))

查询返回一个字符串(nvarchar(max),当前最大大小为9k),SQL Server和.NET之间存在很多延迟。 SQL事件探查器说该查询的持续时间为0毫秒,所以我认为它不是数据库。网络在不到1毫秒内响应,因此它不应该是网络。

如果我在我们的测试服务器上运行此代码(VMWare,SQL未虚拟化),则每秒最多会有600个循环。该应用程序不会消耗超过5%的CPU。为什么不去 快点?我必须使用流式传输来从SQL或其他东西获取数据吗?

提前完成

3 个答案:

答案 0 :(得分:1)

每秒600次呼叫是每1.7毫秒一次呼叫。如果您的延迟是1毫秒,而Sql Server稍微增加了一点,这似乎是一个看似合理的结果?

答案 1 :(得分:0)

我需要看三件不同的事情:

  1. 您的Web服务器是否使用TCP / IP连接到数据库服务器,或者您使用的是其他协议?
  2. 运行dtoNet进程的计算机上的网络有多忙?
  3. 如果删除SQL调用并仅保留性能计数器记录,性能是否超过600个进程/秒?

答案 2 :(得分:0)

打开和关闭SQL连接非常昂贵。你可以这样做一次吗?