ASYNC_NETWORK_IO 等待类型是DBA经常会遇到的,虽然名称是异步、网络和IO,但是大多数情况下,此等待类型跟任何网络问题均无关系。
数据库系统大量出现ASYNC_NETWORK_IO等待的情况,大致有两类:
当SQL Server大量出现ASYNC_NETWORK_IO等待时,最常见的原因是客户端应用程序无法足够快速地处理从SQL Server传回的数据,换句话说,就是SQL Server传递给应用程序的数据量超出了应用程序的处理能力。常见于客户端应用程序请求大量的数据。
当应用程序请求大量的结果数据集时,缓慢的数据处理将导致数据缓冲区被填满,从而阻止SQL Server向客户端发送新的数据。当缓存区被填满时,执行批处理的服务器进程(SPID)将被迫等待,直到客户端应用程序设法开始处理缓冲区中存储的数据,从而允许SQL Server将新的结果集(通过缓冲区)发送给客户端。在等待将应用程序请求的新数据发送到缓冲区以进行进一步处理时,SQL Server会生成ASYNC_NETWORK_IO等待类型。
在遇到高 ASYNC_NETWORK_IO等待类型时,DBA应该如何减少此等待?
DBA需要调查导致出现ASYNC_NETWORK_IO等待类型的应用程序,并与创建应用程序的开发人员进行协调。
在SQL Server端加载大数据时,也可以通过设置启用共享内存协议(Shared memory protocol )来降低ASYNC_NETWORK_IO等待类型。
SELECT net_transport FROM sys.dm_exec_connections WHERE session_id = @@SPID;
【等待优化】sql server ASYNC_NETWORK_IO 等待解决思路
原文:https://www.cnblogs.com/gered/p/12773105.html