Azure SQL DB速度慢(连接/性能)

时间:2018-01-27 12:37:06

标签: azure azure-sql-database azure-web-sites

我写了以下代码:

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种不同的连接:

  1. Azure DB(西欧) - 免费版,5个DTU;
  2. 我们的登台服务器DB(位于西欧的低性能VM) - MS SQL Express;
  3. 本地计算机数据库(东欧) - MS SQL Developer。
  4. 所有3个DB都是相同的。 PortalObjects表有大约430条记录。在我的本地计算机上运行代码显示循环执行的以下时间:

    • Azure:7031毫秒;
    • 分期:7145毫秒;
    • 当地时间:67毫秒。

    当我将应用程序发布到Azure(作为 App Service )并在那里运行循环时:

    • Azure:1668毫秒;
    • 分期:1670毫秒;

    应用服务和数据库托管在同一个Azure门户中,共享相同的订阅和资源组。我期望我在Azure中托管应用程序的时间应该等于本地计算机上本地数据库的时间。但我的结果表明,Azure数据库或Azure应用服务的第三方数据库之间没有区别 - 我发现它完全出乎意料。或者我做错了什么?

1 个答案:

答案 0 :(得分:2)

看起来像网络延迟。本地到Azure似乎每个周期有大约70毫秒的延迟。这可能是35毫秒的两倍。 35毫秒是互联网上常见的延迟。

Azure到Azure的延迟较低。我不知道为什么它们如此之高(16ms或2x8ms)。也许接近100行的较大结果集需要多次往返。你为什么这样测试?测试SELECT NULL来测量单个往返延迟(或者双倍,我不确定TDS是否需要两次往返这个或一个)。

鉴于&#34; Azure&#34;和&#34;分期&#34;你拥有相同的速度,这意味着你没有超出你拥有的DTU。否则这个测试会慢一些。

&#34; Local&#34;如此之快意味着SQL负载几乎没有。你只是在衡量网络。