我在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窗体应用程序。
我的疑问是,我正在运营的环境有任何限制吗?
答案 0 :(得分:1)
问题是你执行4个查询,而不是你打开4个连接 - 你不是。连接池意味着您重用相同的连接。
您仍然需要向服务器发送请求,等待并检索答案。这是导致性能下降的4次往返。无论如何,4个查询的速度最多比单个查询慢4倍。如果检索的数据很小,则往返开销比查询本身更昂贵。
您应该尝试减少数据库调用或完全消除它们: