我正在尝试使用 MAXDOP 设置了解 DBCC CHECKDB 的使用情况-
如果我在我的 MAXDOP 设置为 8 的 SQL 实例上运行 MAXDOP = 0 的 DBCC CHECKDB,实际上发生了什么?我所有可用的说 98 调度程序都会被使用吗?还是只有 8 个?还是只有少数?
如果我在没有 MAXDOP 的情况下运行 DBCC CHECKDB 说服务器级别 MAXDOP 8 的默认值,我应该看到所有 8 个调度程序都使用了吗?或者可以小于 8
为什么我提出上述问题是针对某些服务器的相同 CHECKDB 运行它似乎使用较少的调度程序和一些具有相同运行所有调度程序的服务器导致 100% CPU 峰值
谢谢
根据文档,在这种情况下,“如果 MAXDOP 设置为零,则 SQL Server 选择要使用的最大并行度”,就像在覆盖默认 MAXDOP 设置的任何其他查询中一样。当 MAXDOP 有效设置为 0 时,SQL Server 最多可以使用64个处理器。
然后 SQL Server 选择最大并行度为 8,就像它使用指定了 MAXDOP 覆盖的普通查询一样。
您应该检查以确保服务器相同,具有相同的实例级 CPU 设置、相同的 MAXDOP(也检查数据库级 MAXDOP),并确保正在检查的数据库相同。所有这些都会影响所选择的性能和并行度。