我试图理解使用MAXDOP设置的DBCC的用法-
如果我在我的MAXDOP设置为8的SQL实例上使用MAXDOP =0运行DBCC,那么实际发生了什么?我所有可用的调度程序都会被使用吗?还是只剩8岁?还是只有几个?
如果我在没有MAXDOP的情况下运行DBCC,比如服务器级别为MAXDOP 8的默认情况,那么应该看到所有8个调度程序都使用了吗?也可以少于8
我提出上述问题的原因是,对于某些服务器运行相同的CHECKDB,似乎使用较少的调度程序,而使用相同运行的服务器--所有调度程序都会导致100 %的CPU峰值。
谢谢
发布于 2020-08-03 19:31:19
如果我在我的MAXDOP设置为8的SQL实例上使用MAXDOP =0运行DBCC,那么实际发生了什么?我所有可用的调度程序都会被使用吗?还是只剩8岁?还是只有几个?
根据文档,在本例中“如果MAXDOP设置为零,那么Server将选择要使用的最大并行度”,就像对覆盖默认MAXDOP设置的任何其他查询一样。当有效地将MAXDOP设置为0时,Server可以使用最多64个处理器。
如果我在没有MAXDOP的情况下运行DBCC,比如服务器级别为MAXDOP 8的默认情况,那么应该看到所有8个调度程序都使用了吗?也可以少于8
然后,SQL Server会选择最多8的并行度,就像它使用指定的MAXDOP覆盖的普通查询一样。
您应该检查以确保服务器是相同的,具有相同的实例级CPU设置,相同的MAXDOP (也检查数据库级别的MAXDOP ),并确保被检查的数据库是相同的。所有这些都会影响所选择的性能和并行性。
https://dba.stackexchange.com/questions/273143
复制相似问题