c# - DataReaders,慢速客户端是否会导致连接数超过最大连接数

标签 c# asp.net c#-4.0 ado.net

当使用 DataReader 时,在此示例中为 Response.Write(但我猜它适用于任何控件),慢速客户端是否会影响连接数?平均连接池通常最多有 15 个连接。那么,如果 100 个用户点击了应用程序,其中 50 个用户的连接速度非常慢且延迟很高,那么连接数是否会超过最大连接数?

如果使用 DataTable,我想所有数据都加载到内存中,因此在执行 Response.Write 时连接不会保持打开状态。

例子:

using(SqlDataReader reader = DataUtility.GetReader("select * from employees"))
{
   while(reader.Read()) 
   {
      Response.Write(reader["emp_id"]).ToString();
      Response.Write(reader["username").ToString();
   }
}

对比

DataTable emps = DataUtility.GetDataTable("select * from employees");
foreach(DataRow row in emps.Rows)
{
      Response.Write(row["emp_id"]).ToString();
      Response.Write(row["username").ToString();
}

最佳答案

响应在服务器上缓冲,因此代码不会等待响应实际发送到客户端。慢速连接不会使服务器代码运行得更慢。

不过,如果您先从数据库中获取所需的所有数据,然后关闭数据库连接并使用数据创建响应,那么您的服务器代码会更加高效。这样您就可以尽可能短的时间打开数据库连接,使用更少的数据库资源。


旁注:我看到您在代码中使用了 select *,它从表中获取所有字段。您应该仅指定您实际将使用的字段,以便从数据库中获取尽可能少的数据。

关于c# - DataReaders,慢速客户端是否会导致连接数超过最大连接数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23479214/

相关文章:

c# - Azure Active Directory 用户原理上下文服务器名称

c# - DataGrid 滚动不流畅

c# - 使用反射获取未由接口(interface)实现的对象的所有属性

c# - 如何在 MVC Controller 之外返回 StatusCode 对象

c# - C# 中的抽象类

c# - 将 var 初始化为空

c# - ICommand异常,线程无法访问对象

c# - XmlSerialization 和 xsi :SchemaLocation (xsd. exe)

c# - Asp.net Core azure Web 应用程序日志记录

c# - 如何在泛型的 where 子句中指定泛型类?