首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只有MAXDOP还是1?或者sql可以使用介于1和配置的maxdop之间的值。

只有MAXDOP还是1?或者sql可以使用介于1和配置的maxdop之间的值。
EN

Database Administration用户
提问于 2017-01-02 02:35:59
回答 2查看 544关注 0票数 1

是否有一种方法使sql服务器使用介于1和配置的MAXDOP之间的核心的no?

例如,如果maxdop为8,sql是否可以使用3?让我们说,资源gov、提示和任何其他控制机制都没有到位。

还是单线程简单1,并行化8?

EN

回答 2

Database Administration用户

发布于 2017-01-02 03:19:44

当您设置MAXDOP = 8时,这并不是说并行度将是流程的8个核心。这意味着不超过8个核心将被使用在您的过程。

在这种情况下,它只能使用最多8个核心的一个核心。这都取决于许多其他使用因素,例如当服务器上运行几个长进程时。Server试图管理进程,以便每个正在运行的进程都有规律地获得分配给它的CPU时间。

https://www.brentozar.com/archive/2014/11/many-cpus-parallel-query-using-sql-server/

布伦特的文章也证实了保罗·怀特对肯德拉·利特尔的文章的审计是正确的。(以防万一你想要更多的核实。)

再次从保罗怀特从一个讨论在http://www.sqlservercentral.com

实例范围的MAXDOP设置设置了最大可能的并行度。设置为零(默认设置)允许Server使用它所配置的处理器内核所使用的线程数量。并行性的代价阈值仅由优化器使用。如果成本阈值设置为5,则在优化器寻找并行计划替代方案之前,查询的估计成本必须至少为5。

在这种情况下,查询的MAXDOP 8设置可能不会超过成本阈值,因此不会创建并行计划。

如果您有一个特定需要管理资源的进程,超过1个,但小于MAXDOP设置,则可以添加OPTION (MAXDOP 4) (例如)或其他适合您正在运行的进程的设置。

因此,您有一些选择,而不只是:一个核心,8个核心,或“所有”处理器。

票数 3
EN

Database Administration用户

发布于 2017-01-04 21:42:31

@HumpreyCogay - Bob Dorr在内部记录上写得很好

https://blogs.msdn.microsoft.com/psssql/2008/02/13/how-it-works-sql-server-per-query-degree-of-parallelism-worker-counts/

要挑剔,MAXDOP并不直接控制核心的数量。它控制每个查询计划的操作符使用的线程数。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/159713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档