ASYNC_NETWORK_IO 等待类型有什么需要担心的吗?

Ang*_*ker 16 performance sql-server-2005 sql-server stored-procedures wait-types

在查看需要很长时间执行的存储过程列表时,其中一个会引起最多的等待。然而,大部分等待 (81%) 是 ASYNC_NETWORK_IO,我知道原因:存储过程传输大约 400 MB 的信息。

在文档中,它指出 ASYNC_NETWORK_IO 的原因是客户端无法跟上数据的洪流,这可能是真的。我不确定如何让客户端跟上,因为它所做的只是通过 ADO.NET 调用存储过程,然后只处理数据集。

因此,鉴于此信息,我是否应该担心此过程的 ASYNC_NETWORK_IO 等待类型?它实际上对服务器性能有影响吗?

补充资料:

  • 我使用的是 SQL Server 2005 的 Service Pack 2。
  • 客户端应用程序与 SQL Server 位于同一台机器上(我知道,我知道……但我对此无能为力)。

Seb*_*ine 14

正如您所说,这种等待类型表明应用程序跟不上 SQL Server。现在真正的意思是,SQL Server 不能像它希望的那样快地通过网络发送数据。

可能有两个根本原因:

  1. 应用程序编写效率低下,处理行的速度不够快。
  2. 网络已满。

如果应用程序本身太慢,则不会或不会对其他查询的性能产生显着影响。另一方面,如果管道太小,其他查询也无法发送其结果而必须等待。

但是,在后一种情况下,您将让所有连接等待 ASYNC_NETWORK_IO。您应该能够清楚地看到这种影响。