我写了以下代码:
for (int i = 0; i < 100; i++)
{
string connectionString = Configuration.GetConnectionString(DB_CONNECTION_STRING);
using (SqlConnection con = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand($"SELECT TOP {i} * FROM PortalObjects", con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
我使用3种不同的连接:
所有3个DB都是相同的。 PortalObjects表有大约430条记录。在我的本地计算机上运行代码显示循环执行的以下时间:
当我将应用程序发布到Azure(作为 App Service )并在那里运行循环时:
应用服务和数据库托管在同一个Azure门户中,共享相同的订阅和资源组。我期望我在Azure中托管应用程序的时间应该等于本地计算机上本地数据库的时间。但我的结果表明,Azure数据库或Azure应用服务的第三方数据库之间没有区别 - 我发现它完全出乎意料。或者我做错了什么?
答案 0 :(得分:2)
看起来像网络延迟。本地到Azure似乎每个周期有大约70毫秒的延迟。这可能是35毫秒的两倍。 35毫秒是互联网上常见的延迟。
Azure到Azure的延迟较低。我不知道为什么它们如此之高(16ms或2x8ms)。也许接近100行的较大结果集需要多次往返。你为什么这样测试?测试SELECT NULL
来测量单个往返延迟(或者双倍,我不确定TDS是否需要两次往返这个或一个)。
鉴于&#34; Azure&#34;和&#34;分期&#34;你拥有相同的速度,这意味着你没有超出你拥有的DTU。否则这个测试会慢一些。
&#34; Local&#34;如此之快意味着SQL负载几乎没有。你只是在衡量网络。