C# 응용 프로그램이 SQL Server에 간단한 SQL 스크립트를 보내고 서버에서 응답을 보여줍니다.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);
}
응용 프로그램의 스크린 샷 :
와이어 샤크 스크린 샷 :
내가 여러 번 Enter 키를 누르면, 응답 시간이 일치하지 않습니다. 내가 누르는 지난 6 번에서 가장 빠른 응답은 5ms이고 가장 느린 응답은 29ms입니다. 이유는 모르겠지만 모든 응답이 서버에 캐시되어야합니다.
나는 이미 SQL Server를 프로파일 링했으며 이러한 SQL 기간은 모두 0입니다. 실행 계획은 모두 Clustered Index Seek입니다.
네트워크에 문제가 있습니까? SQL Server가 실행되는 서버에서 프로그램을 실행하면 재현성이 있습니까? – usr
@usr 예, 그렇습니다. 나는 또한 서버 측에서 wireshark를 실행했다. – chengbo
차단 또는 스파이크로드와 같은 일반적인 SQL Server 문제를 제외 시키려고 했습니까? – usr