切换客户端时Client processing time的方差范围及查询效率选型咨询
背景
我们需要从两个查询中选出更优的方案,核心指标是信息在用户屏幕上的展示速度(假设所有用户的网络延迟一致)。这两个查询返回的数据完全相同,但查询结构差异很大。启用客户端统计后,我们分别对两个查询各运行10次试验,对比平均耗时统计:Query A的服务器响应等待时间更短,但客户端处理时间高出很多,导致总执行时间更长。现在需要理清这些结果,才能做出更合理的查询选择。
问题
从SSMS切换到产品实际使用的客户端时,客户端处理时间的预期波动范围有多大?是极小(±5%以内),还是可能出现2倍甚至更高(超过100%)的变化?
这个问题的核心在于:如果同一个查询在产品客户端中的客户端处理时间和服务器响应等待时间波动都很小,是否应该用总执行时间来对比查询效率?如果切换客户端时波动极大(比如客户端处理时间波动2倍以上,并且主导了总执行时间),是不是需要分开单独对比这两个指标?
示例数据
| 查询 | 客户端处理时间 | 服务器响应等待时间 | 总执行时间 |
|---|---|---|---|
| A | 7000 | 1000 | 8000 |
| B | 3500 | 2000 | 5500 |
如果假设在SSMS之外的客户端运行时,各项耗时差异不大,那么应该选择Query B(总执行时间更短);如果客户端处理时间波动极大,就需要先测试SSMS和产品客户端之间的客户端处理时间比值,再做决策。
术语定义
- 服务器响应等待时间(Wait time on server replies):指等待服务器处理查询并返回响应的时间,包含服务器端的数据检索、连接、聚合等操作,常见的服务器端操作算子有索引扫描(Index Scan)、聚集索引扫描(Clustered Index Scan)、表扫描(Table Scan)、哈希匹配(Hash Match,用于连接操作)。
- 客户端处理时间(Client processing time):指客户端对返回结果进行解析、聚合、排序、渲染等操作的耗时,常见的客户端操作算子有排序(Sort)、标量计算(Compute Scalar)、筛选(Filter)、远程查询(Remote Query,如适用)。
内容的提问来源于stack exchange,提问作者Tolure
相关产品推荐
相关产品推荐

