为啥执行计划中的并行性不好[关闭]
Posted
技术标签:
【中文标题】为啥执行计划中的并行性不好[关闭]【英文标题】:Why is parallelism bad in execution plans [closed]为什么执行计划中的并行性不好[关闭] 【发布时间】:2020-11-01 17:22:10 【问题描述】:人们似乎暗示,当黄色箭头出现在执行计划中时,这是一个不好的信号。为什么查询并行运行会出现问题?
【问题讨论】:
您的 SQL 服务器在将结果返回给您之前确实需要做一些额外的工作,如 here 所述。 "人们似乎在暗示,当黄色箭头出现在执行计划中时,这是一个不好的迹象" 在哪里?这些人是谁”?这是同事对你说的吗?如果是这样,当你问他们这件事时,他们给出了什么理由>?如果您在多篇文章中阅读此内容,这些文章/答案是什么?请引用并引用来源。 @Larnu:嗨,这只是语气,我没有直接听说并行性是“坏的”,而是语气。这是我从语气中推断出来的。还有例如sp_BlitzChace 有“Parallel”作为警告... @David 有一篇关于此的文章:sp_BlitzCache™ Result: Parallel Plans Detected。然而,请注意它说的第一件事是“这不一定是坏事”;因此为什么这是一个警告。您需要意识到存在并行性,但这并不意味着您应该摆脱它甚至是有害的。 【参考方案1】:这不是一个坏兆头。根据某些设置,引擎可能决定使用并行运算符来优化某些 T-SQL 语句的执行。在大多数情况下,它会做出更好的选择(使用或不使用)。
如果您担心引擎无法做出更好的决定,您可以更改Max Degree of Parallelism
和Cost Threshold For Parallelism
。反正也有hints强制并行执行——Forced Parameterization。
我个人曾尝试强制并行操作并拒绝它们以调试/提高性能,但最后我总是让引擎而不是我来做出这些决定。
【讨论】:
以上是关于为啥执行计划中的并行性不好[关闭]的主要内容,如果未能解决你的问题,请参考以下文章