慢 - 打开和关闭与SQL Server

时间:2016-04-13 12:06:53

标签: c# sql-server asp.net-mvc azure ado.net

我在Windows Azure上使用SQL Azure运行ASP.NET MVC应用程序。该应用程序使用SqlClient连接到数据库。我总是使用相同的connectionString(使用连接池):

        using (SqlConnection conn = new SqlConnection("Static Connection String"))
        {
            using (var command = conn.CreateCommand())
            {                    
                conn.Open();
                return command.ExecuteNonQuery();
            }
        }

我注意到在打开连接之间存在相当长的时间,导致执行缓慢。例如,如果我有一个包含四个选择列表的页面,则应用程序需要打开连接四次以填充列表。如果使用一个命令执行此操作,返回所有列表,则性能令人难以置信,但是当我打开并关闭连接以单独获取结果列表时,性能也会下降。

使用不会发生的Windows窗体应用程序。

我的疑问是,我正在运营的环境有任何限制吗?

1 个答案:

答案 0 :(得分:1)

问题是你执行4个查询,而不是你打开4个连接 - 你不是。连接池意味着您重用相同的连接。

您仍然需要向服务器发送请求,等待并检索答案。这是导致性能下降的4次往返。无论如何,4个查询的速度最多比单个查询慢4倍。如果检索的数据很小,则往返开销比查询本身更昂贵。

您应该尝试减少数据库调用或完全消除它们:

  • 使用批处理将多个查询合并为一个调用。
  • 使用缓存查找数据,这样您就不必一直检索相同的选择。
  • 最后,如果请求参数没有改变,请使用输出缓存以避免呈现相同的页面。