KB4089473 - 在 SQL Server 2017 和 2016 中进行更好的查询内并行死锁故障排除

应用对象
SQL Server 2017 Developer SQL Server 2017 Enterprise SQL Server 2017 Enterprise Core SQL Server 2016 SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

摘要

此SQL Server更新通过添加以下增强功能改进了与并行度相关的 (Exchange) 死锁的故障排除:

  • exchange_spillxEvent 在事件字段名称worktable_physical_writes中报告每个线程每个线程溢出的数据并行度运算符的量。 每个线程可能会多次报告exchange_spill xEvent。

  • DMV sys.dm_exec_query_stats、sys.dm_exec_procedure_stats 和 sys.dm_exec_trigger_stats 现在在列 total_spills、last_spills、max_spills 和 min_spills 中包括并行运算符溢出的数据。

  • 如果存在并行度溢出,则会在运行时报告 showplan 警告 。 此警告在 ExchangeSpillDetails WritesToTempDb=“spill_amount” />) (的 <showplan xml 属性中呈现。

  • 针对并行度死锁方案改进了 XML 死锁图 。 更多属性将添加到 exchangeEvent 资源:

    • waiterType——消费者、生产者、协调者。
    • tid - 并行计划中每个线程的唯一标识符。
    • ownerActivity–资源所有者 (之前) 做了什么。 可以是“receivedData”、“sentData”、“notYetOpened”或“opened”。
    • waiterActivity–资源请求者正在尝试执行的操作。 可以是“tryToSendData”、“needMoreData”、“waitForAllConsumersToBeReady”、“waitForAllOwnersToOpen”或“waitForAllownersToClose”。
    • 合并 - 等待程序是否参与合并数据。
    • 溢出 - 服务员是否溢出数据。
    • waitingToClose–等待程序是否在等待使用者关闭管道。
  • 针对涉及批处理模式运算符的死锁,改进了 XML 死锁图 。 更多属性将添加到位于以下位置的 SyncPoint 资源:

    • logicalOperatorType – 与 showplan xml 中的逻辑运算符类型匹配的逻辑运算符类型。

    • physicalOperatorType – 与 showplan xml 中的物理运算符类型匹配的物理运算符类型。

    • WaitType 和 synchronizingAt - 两个属性可以共同标识等待程序和所有者同步的点。

      注意

      • WaitType 和 synchronizingAt 属性值是内部属性值。 但它们可用于帮助 Microsoft 支持部门解决问题。
      • 为批处理模式排序、哈希联接和哈希聚合运算符添加了 synchronizingAt 属性。
    • ownerActivity–始终为“NotYetArrived”。

    • waiterActivity–始终“已到达”。

更多信息

此更新包含在 SQL Server 2017 的累积更新 5 中。

SQL Server 2016 的 Service Pack 信息

此更新已在以下 SQL Server 服务包中修复:

适用于 SQL Server 2016 的 Service Pack 2

关于 SQL Server 2017 内部版本

SQL Server 2017 的每个新内部版本都包含先前内部版本中的所有修补程序和安全修补程序。 建议安装 SQL Server 2017 的最新版本。

关于 SQL Server 的 Service Pack:

Service Pack 具有累积性。 每个新 Service Pack 除了包含所有新修复程序外,还包含以前 Service Pack 中的所有修复程序。 建议应用最新的 Service Pack 和该 Service Pack 的最新累积更新。 在安装最新的 Service Pack 之前,不需要安装以前的 Service Pack。 使用以下文章中的表 1 查找有关最新 Service Pack 和最新累积更新的详细信息。

如何确定 SQL Server 及其组件的版本、版本类别和更新级别

参考资料

了解 Microsoft 用于描述软件更新的 术语 。