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月前
|
Linux
crash —— 如何获取IO port和IO memory使用情况
crash —— 如何获取IO port和IO memory使用情况
|
5月前
|
C++
Open3D File Io 文件IO
Open3D File Io 文件IO
|
5月前
|
存储 Go C#
【.NET Core】深入理解IO之File类
【.NET Core】深入理解IO之File类
69 6
|
5月前
|
存储 缓存 数据安全/隐私保护
【.NET Core】深入理解IO - FileSteam流
【.NET Core】深入理解IO - FileSteam流
59 2
|
5月前
|
存储 Unix C#
【.NET Core】深入理解IO之Path
【.NET Core】深入理解IO之Path
68 2
|
6月前
Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider解决
Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider解决
420 0
|
Java Linux iOS开发
boost::io_service解读
boost::io_service解读 asio是boost提供的一个c++异步编程模型库,其核心类io_service,在多线程编程里面提供了任务队列和任务分发功能,在socket、io编程里主要作为一个事件驱动器(完成端口、select、poll、epoll等)。
1682 0
|
网络协议 监控
boost asio中io_service类的几种使用
io_service类 你应该已经发现大部分使用Boost.Asio编写的代码都会使用几个io_service的实例。io_service是这个库里面最重要的类;它负责和操作系统打交道,等待所有异步操作的结束,然后为每一个异步操作调用其完成处理程序。
2339 0
|
监控 网络协议 Perl
|
监控 网络协议 Perl