ASYNC_NETWORK_IO 或 NETWORK_IO

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,独享型 2核4GB
简介:

翻译自:https://mssqlwiki.com/sqlwiki/sql-performance/async_network_io-or-network_io/


什么是 ASYNC_NETWORK_IO 或 NETWORK_IO ?

当查询执行时,SQL Server处理结果,并将它放到输出缓存,发送给客户端或应用程序。

客户端或应用程序然后从输出缓存获取结果,处理数据,并发送确认信息给SQL Server。如果客户端或应用程序花了很长时间发送确认信息,那么SQL Server在处理额外结果之前等待 ASYNC_NETWORK_IO(SQL Server 2005/2008) 或 NETWORK_IO(SQL Server 2000)。

这个等待类型的影响:
1.SQL Server将不会释放被查询持有的锁,除非客户端收到确认信息。这可能导致阻塞。
2.查询持续时间增加,因此查询会很慢。

如何排除 ASYNC_NETWORK_IO 或 NETWORK_IO 等待类型故障?

限制结果集:限制从SQL Server获取的行数。很多应用程序设计者从整个表不使用Where从句过滤而获取数据,并在客户端过滤。这是非常错误的方式,应该在服务端过滤。

如果需要从服务器获取大量的行,并且如果其他会话由于ASYNC_NETWORK_IO 或 NETWORK_IO正在阻塞,那么插入所有行到临时表,然后从临时表查询。

检查客户端应用程序的性能:检查是否客户端或应用程序系统正经历着系统资源瓶颈。如果有系统资源瓶颈,应用程序将不能更快处理结果集。

网络:检查SQL Server和客户端或应用程序系统之间的网络速度。如果网络很慢,应用程序不能更快获取结果。

NOLOCK提示或快照隔离级别:检查是否你可以使用NOLOCK提示或快照隔离级别。














本文转自UltraSQL51CTO博客,原文链接: http://blog.51cto.com/ultrasql/1791419,如需转载请自行联系原作者





相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
2月前
|
C++
Open3D File Io 文件IO
Open3D File Io 文件IO
|
Dubbo 前端开发 Java
Failed to bind NettyServer on ×××,cause: io/netty/bootstrap/ServerBootstrap
Failed to bind NettyServer on ×××,cause: io/netty/bootstrap/ServerBootstrap
Failed to bind NettyServer on ×××,cause: io/netty/bootstrap/ServerBootstrap
|
关系型数据库 MySQL Linux
Slave_IO_Running: No 的解决
原因:两台主从数据库的uuid相同了(没猜错的话,各位应该是直接克隆了linux服务器,然后配置主从数据库,一通操作,到最后启动从数据库,发现的这个问题吧)。1:使用 find / -iname "auto.cnf" 命令查找你数据库的auto.cnf 配置文件。我的在这个目录下,同学们的也可能在其他目录,取决于你mysql放的位置哈。譬如:你把最后的f改成e,跟主数据库不一样就行。4: 登录mysql,重启slave,再次验证。2:对这个配置文件的uuid进行更改。
169 0
Slave_IO_Running: No 的解决
|
Java Linux iOS开发
boost::io_service解读
boost::io_service解读 asio是boost提供的一个c++异步编程模型库,其核心类io_service,在多线程编程里面提供了任务队列和任务分发功能,在socket、io编程里主要作为一个事件驱动器(完成端口、select、poll、epoll等)。
1661 0
|
网络协议 监控
boost asio中io_service类的几种使用
io_service类 你应该已经发现大部分使用Boost.Asio编写的代码都会使用几个io_service的实例。io_service是这个库里面最重要的类;它负责和操作系统打交道,等待所有异步操作的结束,然后为每一个异步操作调用其完成处理程序。
2310 0
|
SQL
SQL Server中与IO相关的等待类型:IO_COMPLETION和PAGEIOLATCH_*
原文:SQL Server中与IO相关的等待类型:IO_COMPLETION和PAGEIOLATCH_* 一个大的SQL语句操作,执行计划中包含了一个merge join操作,观察到SQL长时间处于IO_COMPLETION等待状态,如果是读取相关的表的数据,服务器应该全力为其服务,但是服务器的物理IO又远远没有达到瓶颈。
1319 0
|
监控 网络协议 Perl
|
监控 网络协议 Perl
|
缓存 Linux 算法