【问题标题】:It is safe to use OPTION (MAXDOP 1) to reduce parallelism in SQL Server?使用 OPTION (MAXDOP 1) 减少 SQL Server 中的并行性是否安全?
【发布时间】:2026-02-08 15:55:02
【问题描述】:

我正在尝试使用 OPTION (MAXDOP 1) 优化 SQL Server 存储过程,这样可以避免执行计划的并行性,但我的问题是,使用它是否安全?

我读过它可能会导致结果出现一些错误,而在其他网站上他们说不推荐,所以我的问题是?使用安全吗?

在不使用OPTION (MAXDOP n)的情况下,还有其他方法可以避免并行性吗?

谢谢

【问题讨论】:

  • “我正在尝试使用 OPTION (MAXDOP 1”) 优化 SQL Server 存储过程 - 你最好确保拥有“正确”的索引并且统计信息是最新的。
  • 并在您的问题中包含确切的建议和参考。

标签: sql sql-server query-optimization


【解决方案1】:

是的,可以安全使用。

设置OPTION (MAXDOP 1)documented query hint,因此受支持。如果带有此提示的查询返回错误的结果,这将是一个错误并会得到修复。

注意“错误的结果”与“不同的结果”不是一回事。可以编写一个查询,其结果取决于查询计划的选择。例如,一个没有 ORDER BY 的 TOP 10 查询将根据计划的选择返回不同的 TOP 10

【讨论】:

  • 使用安全,但不一定是好建议!
【解决方案2】:

这一切都取决于查询的执行计划。如果查询由于并行性而有很多 CXPACKET 等待,我们可以查看将 MAXDOP 设置为 1 是否有助于查询。在设置此选项之前需要对其进行测试。

最好有正确的索引,而不是使用这些类型的查询提示。因为,优化器更清楚地决定是否采用并行计划。

另外,请参阅以下文章了解更多信息:

【讨论】:

    最近更新 更多