gpt4 book ai didi

c# - SQL Server响应时间不一致

转载 作者:行者123 更新时间:2023-11-30 22:06:49 24 4
gpt4 key购买 nike

我有一个 C# 应用程序,它只是向 SQL Server 发送一个简单的 SQL 脚本,并显示服务器的响应。

代码如下:

static SqlConnection conn = new SqlConnection("Data Source=servername;Initial Catalog=dbname;User ID=username;Password=password");

static void Main(string[] args)
{
conn.Open();
while (Console.ReadLine() == "")
{
ShowData();
}
conn.Close();
}

static Stopwatch sw = Stopwatch.StartNew();

static void ShowData()
{
var t1 = sw.ElapsedMilliseconds;
var s = @"SELECT TOP (1) [t0].[GroupName] FROM [dbo].[Groups] AS [t0] WITH (NOLOCK) WHERE [t0].[GroupId] = '43ed86d4-42ef-4e6c-9a98-ba48c1f293e7'";

var com = new SqlCommand(s, conn);
var reader = com.ExecuteReader();

if (reader.Read())
{
Console.WriteLine(reader[0]);
}

reader.Close();

Console.WriteLine(sw.ElapsedMilliseconds - t1);
}

应用截图:
console application screenshot

Wireshark 截图:
wireshark screenshot

我按了几次ENTER,响应时间不一致。我最后6次按下,响应最快的是5ms,最慢的是29ms。我不确定为什么,似乎所有响应都应该缓存在服务器中。

顺便说一句,我已经分析了SQL Server,这些SQL的持续时间都是0。执行计划都是Clustered Index Seek。

最佳答案

我建议以几种不同的方式深入研究这个问题,以进一步了解差异。

例如,如果您将查询更改为类似 SELECT 1 的内容(不需要检索)会发生什么......

...如果您仍然看到与此有差异,那么我会怀疑其他人在说什么...网络、来自其他进程的不可预测的负载等。顺便说一句,希望您有一个千兆网络连接到数据库服务器,没有比这更慢的了。

...如果这消除了差异,那么您需要怀疑 SQL Server 的检索。例如。它是否在两个不同的查询计划之间摇摆不定?顺便说一句,你说它使用的是聚集索引搜索......你是说在(假设)非唯一 GroupId 列上有一个聚集索引吗?

关于c# - SQL Server响应时间不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23347596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com