当使用 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/