症状
兼容级别130下的 SQL Server 2016 中引入了批模式排序。 如果查询执行计划包含并行批处理模式与直接上游并行运算符一起进行排序,则你可能会遇到与行模式排序计划等效的性能下降的性能。
出现这种情况的原因是并行批处理通过将完全排序的数据通过单个线程输出到上游并行运算符(例如,并行合并联接运算符)来进行排序。 当上游并行运算符由于传入单线程批处理模式排序运算符而使用单线程处理时,将发生性能下降。
此更新引入了跟踪标记9358以禁用 大多数 并行运算符(包括合并联接、嵌套循环和流聚合)下的批处理模式排序操作。 异常是排序上的批处理模式 windows 聚合运算符,它将在其下继续允许批处理模式排序操作,因为 windows 聚合运算符已针对读取批排序数据进行了优化。
注意 如果以下任何条件为 true,则还会禁用批处理模式排序操作
-
已启用跟踪标记4199。
-
QUERY_OPTIMIZER_HOTFIXES 数据库选项已启用(从 SQL Server 2016 CU6)。
-
使用 ENABLE_QUERY_OPTIMIZER_HOTFIXES 查询提示(从 SQL Server 2016 Service Pack 1 (SP1) CU4)开始。
解决方案
在以下 SQL Server 累积更新中首先修复此问题:
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 我们建议你下载并安装 SQL Server 的最新累积更新:
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
参考
了解 Microsoft 用于描述软件更新的 术语 。