在查看需要很长时间执行的存储过程列表时,其中一个会导致最多的等待。但是,大部分等待(81%)是 ASYNC_NETWORK_IO,我知道原因:存储过程传输大约 400 MB 的信息。
在文档中,它指出 ASYNC_NETWORK_IO 的原因是客户端无法跟上数据洪流,这可能是真的。我不确定如何让客户端跟上,因为它所做的只是通过 ADO.NET 调用存储过程,然后只处理数据集。
因此,鉴于此信息,我是否应该担心此过程的 ASYNC_NETWORK_IO 等待类型?它实际上对服务器性能有影响吗?
附加信息:
- 我使用的是 SQL Server 2005 的服务包 2。
- 客户端应用程序与 SQL Server 在同一个盒子上(我知道,我知道......但我对此无能为力)。
正如您所说,这种等待类型表明应用程序没有跟上 SQL Server。现在这真正的意思是,SQL Server 无法通过网络尽可能快地发送数据。
可能有两个根本原因:
如果应用程序本身太慢,则不会或不会对其他查询的性能产生重大影响。另一方面,如果管道太小,其他查询也不能发送它们的结果而不得不等待。
然而,在后一种情况下,所有连接都在 ASYNC_NETWORK_IO 上等待。您应该能够清楚地看到这种影响。