MAXDOP = 1,并行查询提示和成本阈值


11

如果实例MAXDOP设置为1,并且查询提示用于允许特定查询并行进行,那么SQL仍然使用“并行成本阈值”来决定是否实际并行吗?

尽管此链接建议CTFP如果MAXDOP为1 ,则将其忽略。尽管有任何查询,无论成本如何,在没有查询提示的情况下,当MAXDOP值为1 时,它都将并行进行。

谁能让我知道这两个请求的预期行为?

范例1:

Instance Maxdop: 1 
CTFP: 50 
Query hint: Maxdop=2 
Query cost: 30

范例2:

Instance Maxdop: 1
CTFP: 50
Query hint: Maxdop=2
Query cost: 70

Answers:


20

如果实例MAXDOP设置为1,并且查询提示用于允许特定查询并行进行,那么SQL仍然使用“并行成本阈值”来决定是否实际并行吗?

简单的答案:是的

细节

这里有几个分开的事情,分开是很重要的:

  1. 用于查询的有效最大并行度是多少?

    造成这种情况的原因是(按重要性顺序大体上):

    • 资源调控器MAX_DOP设置
    • 查询提示MAXDOP设置
    • max degree of parallelism实例配置选项

    有关详细信息,请参见服务器的“最大并行度”设置,资源调控器的MAX_DOP和查询提示MAXDOP-SQL Server应该使用哪一个?作者:Microsoft SQL Server客户服务和支持的高级升级工程师Jack Li。下表是从该链接复制而来的:

    并行表

  2. 查询计划会使用并行性吗?

    SQL Server查询优化器始终首先找到一个串行计划 *。

    然后,如果:

    • 进一步优化是合理的;
    • 最佳串行计划的成本超过了cost threshold for parallelism配置值


    ...优化器将尝试找到并行计划。

    然后,如果:

    • 找到一个并行计划(即可能的);
    • 并行计划的成本低于最佳串行计划


    将会制定平行计划

注:cost threshold for parallelism只影响是否优化查找一个并行计划。缓存并行计划后,无论CTFP设置如何,只要重用(只要线程可用),它将在并行使用时执行。


例子

对于两个示例,对于实例maxdop 1和查询提示maxdop 2,有效的可用DOP为2。如果选择了并行计划,它将使用DOP 2。

例子1

给定CTFP为50,而最便宜的串行计划发现成本为30,SQL Server将不会尝试找到并行计划。将会制定一个系列计划。

例子2

鉴于CTFP为50,而最便宜的串行计划发现成本为70,SQL Server将尝试找到并行计划。如果此计划(如果找到)的成本低于70(串行计划成本),则将生成并行计划。


查询优化的最终结果始终是单个缓存计划:串行并行。只有优化查找一个串行计划搜索0(TP)和搜索1(QP)阶段。

然后,可以(如所述)重新运行search1并要求生成并行计划。然后根据到目前为止的最佳总体计划成本,在串行和并行之间进行选择。如果优化继续进行到search2(完全优化),则该选择具有约束力。优化的每个阶段都考虑许多替代方案,但是一个阶段的输出始终是单个最佳计划,可以是串行的也可以是并行的。

我在神话中写了一些这样的内容:SQL Server使用每个并行计划缓存一个串行计划


2

示例1实例Maxdop:1 CTFP:50查询提示:Maxdop = 2查询成本:30

MAXDOP查询提示将覆盖实例范围内的最大并行度,但由于CTPF为50,查询成本为30,因此可能适合串行计划。

示例2实例Maxdop:1 CTFP:50查询提示:Maxdop = 2查询成本:70

由于MAXDOP提示存在,因此最大并行度将再次设为2,但CTFP将设为50并进行查询,如果可能的话,如Paul提到的可并行运行。

如果实例的MAXDOP设置为1,并且查询提示用于允许特定查询并行进行,那么SQL仍然使用“并行成本阈值”来决定是否实际并行吗?

MAXDOP提示将覆盖最大并行度的实例范围设置。

引用MAXDOP提示docs.microsoft

MAXDOP编号适用于:SQL Server 2008到SQL Server 2017。

为指定此选项的查询覆盖sp_configure和Resource Governor的最大并行度配置选项。MAXDOP查询提示可以超过使用sp_configure配置的值。如果MAXDOP超过使用资源调控器配置的值,则数据库引擎将使用资源调控器MAXDOP值,

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.