sql-server – SQL Server – Management Studio – 客户端统计信息 – 服务器回复等待时间与客户端处理时间

前端之家收集整理的这篇文章主要介绍了sql-server – SQL Server – Management Studio – 客户端统计信息 – 服务器回复等待时间与客户端处理时间前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个缓慢运行的查询,我一直在努力优化.

在管理工作室中查看客户端统计信息时,服务器回复大约需要等待8秒的时间,客户端处理时间约为1秒.

我一直以为服务器回复的等待时间是要工作的数字,而客户端处理时间一般是带宽或大数据量相关.

我已经对查询进行了一些更改,现在我的服务器回复的等待时间大约是250ms,然而,客户端处理时间已经增加到大约9秒,使总执行时间稍慢.

返回的结果集完全相同.

有人可以看出这两个数字之间究竟有什么区别,什么会导致这样的结果?

解决方法

“等待服务器端回复的时间”是客户端最后一个请求数据包与从服务器返回的第一个响应数据包之间的时间. “客户处理时间”是第一个响应数据包和最后一个响应数据包之间的时间. Btw,我找不到文件支持这些声明,但是我会说,根据我的观察,他们是有效的教育猜测.

如果您在服务器回复中运行大量等待时间的查询,则意味着服务器需要很长时间才能生成第一行.对于具有运算符需要整个子查询进行评估(在典型示例是排序运算符)的查询,这是常见的.

另一方面,具有非常小的’服务器回复的等待时间’的查询意味着查询能够快速返回第一行.然而,长的“客户端处理时间”并不一定意味着客户端花费了大量的时间处理,并且服务器被阻塞等待在客户端上.它可以简单地意味着服务器继续从结果返回行,这是在返回最后一行之后花费的时间.

您所看到的是查询计划的更改结果,可能会删除正在阻止执行(最可能是排序)的运算符,并且新计划使用不同的策略来更快地生成第一个结果(可能使用保证请求的索引)订单,所以我不需要),但总体来说更长.

如果您担心客户端阻止服务器(可能会发生在大型结果集上),那么您应该调查执行调查查询的会话的sys.dm_exec_requests中的wait_type(sys.dm_os_taskssys.dm_os_workers的信息是否有用).如果我没有错,服务器等待客户端等待类型是ASYNC_NETWORK_IO.您还可以检查聚合sys.dm_os_wait_stats,使用DBCC SQLPERF("sys.dm_os_wait_stats",CLEAR)重新设置,然后运行查询,查看ASYNC_NETWORK_IO等待类型加起来多长时间.当然,确保在测试期间服务器上没有其他活动发生.

原文链接:https://www.f2er.com/mssql/81676.html

猜你在找的MsSQL相关文章