逐行处理c&;SQL Server中的Async_Network_IO

本文关键字:Async 中的 Network IO Server SQL 处理 amp 逐行 | 更新日期: 2023-09-27 17:58:19

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

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

我们已经发现了一些设计问题,这些问题已经得到解决,并有助于提高性能。在审查过程中,我们还注意到以下几点。在SQL Server中,ASYNC_NETWORK_IO在我们的前10个等待统计数据中一直处于高位。

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

  1. 我说得对吗,如果SQL Server由于RowByRowPro而能够比SqlDataReader读取结果集更快地返回结果集,那么数据将存储在网络缓冲区中。如果空间已满,SQL Server必须等待空间变为可用;因此CCD_ 3等待状态增长。这是正确的吗?

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

  3. 最后,有没有人创建了一个测试用例,可以显示上面的效果?

逐行处理c&;SQL Server中的Async_Network_IO

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