与默认 maxdop 并行运行的查询

Beg*_*DBA 5 performance sql-server sql-server-2012 maxdop query-performance

我需要了解 sql server 查询的以下行为

系统有 4 个 CPU,超线程比率为 20,使 80 个逻辑处理器在我的 sql server 实例上计数。

当前 MAXDOP 为 0,ctop 为 5

这是一个只读实例,充当 LS 的备用实例,其中完成所有报告。

进入的许多查询似乎显示并行度为 64。

问题: .1。当逻辑处理器数为 80 时,为什么并行度不是 80?

  1. 我的理解是否正确,如果一个小时内有 6 个慢查询都显示并行度 64 预计会变慢,因为它们可能会击中相同的线程并因此显示为 cx 数据包等待。因此我相信通过测试将 MAXDOP 更改为 16 或 8 应该给他们自己的线程来完成?

谢谢

Eri*_*ing 7

简单的答案是 64是指定零时DOP 限制

要使服务器能够确定最大并行度,请将此选项设置为 0,即默认值。将最大并行度设置为 0 允许 SQL Server 使用最多 64 个处理器的所有可用处理器。

如果您设置该特定数量(即不为零),则单个查询可以使用超过 64 个内核:

将该值设置为 1 到 32,767 之间的数字以指定单个查询执行可以使用的最大处理器内核数

另请参阅SQL Server MAX DOP Beyond 64 – 这可能吗?

至于 SQL Server 将如何分配线程,这篇博文是我见过的最接近官方文档的:

SQL Server 并行查询放置决策逻辑