Sql-Server

與完整 DBCC CHECKDB 相比,帶有 PHYSICAL_ONLY 選項的 DBCC CHECKDB 執行速度較慢?

  • November 6, 2020

DBCC CHECKDB WITH PHYSICAL_ONLY與 full 相比,是否可以執行得更慢DBCC CHECKDB?該平台是 SQL Server 2014 SP2。

根據微軟的說法,沒有。

DBCC CHECKDB 文件

PHYSICAL_ONLY 將檢查限制為頁和記錄頭的物理結構的完整性以及數據庫的分配一致性。此檢查旨在提供對數據庫物理一致性的少量成本檢查,但它也可以檢測損壞的頁面、校驗和故障以及可能危及使用者數據的常見硬體故障。與早期版本相比,完整執行 DBCC CHECKDB 可能需要更長的時間才能完成。

我通過對同一個 50GB 數據庫執行 DBCC CHECKDB 兩次來確認這一點,一次指定了 PHYSICAL_ONLY,另一次沒有設置任何選項。結果:

With physical_only:
SQL Server Execution Times:
CPU time = 46894 ms,  elapsed time = 61546 ms.

All checks: 
SQL Server Execution Times:
CPU time = 247964 ms,  elapsed time = 263678 ms.

說了這麼多,您是否看到 PHYSICAL_ONLY 比完整檢查需要更長的時間?

編輯:這是 320GB 數據庫的結果:

With physical_only:
SQL Server Execution Times:
CPU time = 552805 ms,  elapsed time = 1218867 ms.

All checks:
SQL Server Execution Times:
CPU time = 2074875 ms,  elapsed time = 3007516 ms.

所以,不 - 大於 200GB 的數據庫上的 PHYSICAL_ONLY 並不比完整檢查慢。

通常不會:它執行任務的子集,因此應該更快。

但是對於小型數據庫(其中“小”的定義取決於 IO 設置(您的 RAID/SAN/… 有多少記憶體?),也許還有可用記憶體),如果您先執行它,它可能會更快,因為它在通常較長的過程之前啟動記憶體。

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