慢 - 打开和关闭与 SQL 服务器的连接

Slow - Open and close connection to SQL Server

我在 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 表单应用程序不会发生。

我的疑惑是,我所在的环境有什么限制吗运行?

问题是您执行了 4 个查询,而不是您打开了 4 个连接——您没有。连接池意味着您重复使用相同的连接。

不过您仍然需要向服务器发送请求,等待并检索答案。这是杀死性能的 4 次往返。无论如何,4 个查询将比单个查询慢 4 倍。如果检索的数据很小,往返开销比查询本身要昂贵得多。

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

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