使用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();
}
}
VS
DataTable emps = DataUtility.GetDataTable("select * from employees");
foreach(DataRow row in emps.Rows)
{
Response.Write(row["emp_id"]).ToString();
Response.Write(row["username").ToString();
}
答案 0 :(得分:1)
响应在服务器上缓冲,因此代码不会等待实际发送到客户端的响应。缓慢的连接不会使服务器代码运行得更慢。
如果您首先从数据库中获取所需的所有数据,然后关闭数据库连接并使用数据创建响应,那么您的服务器代码将更有效。这样,您可以使用较少的数据库资源尽可能短地打开数据库连接。
附注:我看到你在代码中使用select *
,它从表中获取所有字段。您应该只指定实际将使用的字段,以便从数据库中获取尽可能少的数据。
答案 1 :(得分:0)
我们无法用给出的代码回答这个问题。连接数取决于您在代码中打开和关闭连接的时间。如果等待所有数据在关闭连接之前发送到客户端,则缓慢连接会产生影响。
大多数C#代码都不是这样编写的。通常,您打开一个连接,做一些工作并关闭连接。然后进行其他处理并将响应发送给客户端。
向我们展示更多代码,我希望您不会关闭连接,这会导致您的问题。