Sql-Server

帶有 MAXDOP 設置的 DBCC CHECKDB 行為

  • August 3, 2020

我正在嘗試使用 MAXDOP 設置了解 DBCC CHECKDB 的使用情況-

如果我在我的 MAXDOP 設置為 8 的 SQL 實例上執行 MAXDOP = 0 的 DBCC CHECKDB,實際上發生了什麼?我所有可用的說 98 調度程序都會被使用嗎?還是只有 8 個?還是只有少數?

如果我在沒有 MAXDOP 的情況下執行 DBCC CHECKDB 說伺服器級別 MAXDOP 8 的預設值,我應該看到所有 8 個調度程序都使用了嗎?或者可以小於 8

為什麼我提出上述問題是針對某些伺服器的相同 CHECKDB 執行它似乎使用較少的調度程序和一些具有相同執行所有調度程序的伺服器導致 100% CPU 峰值

謝謝

如果我在我的 MAXDOP 設置為 8 的 SQL 實例上執行 MAXDOP = 0 的 DBCC CHECKDB,實際上發生了什麼?我所有可用的說 98 調度程序都會被使用嗎?還是只有 8 個?還是只有少數?

根據文件,在這種情況下,“如果 MAXDOP 設置為零,則 SQL Server 選擇要使用的最大並行度”,就像在覆蓋預設 MAXDOP 設置的任何其他查詢中一樣。當 MAXDOP 有效設置為 0 時,SQL Server 最多可以使用64個處理器。

如果我在沒有 MAXDOP 的情況下執行 DBCC CHECKDB 說伺服器級別 MAXDOP 8 的預設值,我應該看到所有 8 個調度程序都使用了嗎?或者可以小於 8

然後 SQL Server 選擇最大並行度為 8,就像它使用指定了 MAXDOP 覆蓋的普通查詢一樣。

您應該檢查以確保伺服器相同,具有相同的實例級 CPU 設置、相同的 MAXDOP(也檢查數據庫級 MAXDOP),並確保正在檢查的數據庫相同。所有這些都會影響所選擇的性能和並行度。

引用自:https://dba.stackexchange.com/questions/273143