逐行处理c#&;SQL Server中的异步网络IO

逐行处理c#&;SQL Server中的异步网络IO,c#,sql-server,C#,Sql Server,我在一个用c#开发的客户端应用程序上工作,它有一个SQL Server后端 在服务器端,我们注意到随着用户数量和数据量开始增长,性能有所下降 我们已经确定了一些设计问题,这些问题已经得到解决,并有助于提高性能。在我们的审查过程中,我们还注意到以下几点。在SQL Server中,ASYNC\u NETWORK\u IO在我们的十大等待统计数据中一直居高不下 据我所知,这可能是客户端逐行处理的结果。为了验证这一点,我的问题如下: 我说的对吗?如果由于RowByRowPro,SQL Server返回结

我在一个用c#开发的客户端应用程序上工作,它有一个SQL Server后端

在服务器端,我们注意到随着用户数量和数据量开始增长,性能有所下降

我们已经确定了一些设计问题,这些问题已经得到解决,并有助于提高性能。在我们的审查过程中,我们还注意到以下几点。在SQL Server中,
ASYNC\u NETWORK\u IO
在我们的十大等待统计数据中一直居高不下

据我所知,这可能是客户端逐行处理的结果。为了验证这一点,我的问题如下:

  • 我说的对吗?如果由于RowByRowPro,SQL Server返回结果集的速度比
    SqlDataReader
    读取结果集的速度快,那么数据将存储在网络缓冲区中。如果空间已满,SQL Server必须等待空间可用;因此,
    ASYNC\u NETWORK\u IO
    wait stat会增长。这是正确的吗

  • 如果我在问题1中的陈述是正确的,那么在处理当前正在等待的请求之外的其他请求时,这会给SQL Server带来多少开销

  • 最后,是否有人创建了一个可以显示上述效果的测试用例

  • SQLServer在客户端确认之前不考虑查询。客户端处理缓慢是导致大型
    异步网络IO
    (网络问题是第二个问题)的最常见原因
  • 其结果是资源没有在时间内存、调度程序中释放
  • 不是一个测试用例,而是一个真正的客户机消耗了几GB的数据,逐行读取并逐行操作。当时,科学地衡量影响并不是我的首要任务,但我记得这大大降低了服务器的速度,所以我杀死了客户端(进程,而不是真正的家伙)