SQL Server阻塞类型之ASYNC

最近在项目中,遇到SQL Server数据库卡顿,在数据库中发现了大量的ASYNC_NETWORK_IO等待,而且出现这种等待的语句都是大的SELECT查询。开始我以为数据库遇到了瓶颈,毕竟此项目非常巨大,实时数据请求非常高。

直到网络工程师发现了网络延迟,我才意识到这个阻塞的原因。从字面意思,我们知道,这个是异步网络IO等待,在这个案例中,数据库已经把客户端请求的数据准备好,但是在发送给客户端的时候,由于网络延迟,造成这些数据无法发送出去,当大量的客户端一起发送此类请求后,更加造成了网络拥堵,从而引起大量的客户端卡顿。

当网络恢复正常后,此类阻塞也随之消失,虽然此处的ASYNC_NETWORK_IO等待是由于网络延迟造成的,通过此事故,我们设计程序的时候也要谨慎起来,尽量避免不必要的数据返回,只返回有用的数据就可以了,并不是数据库服务器配置高了就能应付庞大的客户端请求了,在没有高速网络的前提下,同样会造成性能问题,毕竟数据库只是处理数据,把数据从服务端传输到客户端还是需要网络来处理的。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180526G07TQ200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券