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