最佳化 DBCC CHECKDB 效能

DBCC CHECKDB 與相關陳述式通常必須將每個配置的分頁從磁碟讀取至記憶體內,如此才能進行檢查。當系統上已經有許多活動時執行 DBCC CHECKDB,因而造成 DBCC 效能降低的原因有兩個。第一個原因是可用的記憶體較少,而且強制 SQL Server Database Engine 將部份的 DBCC CHECKDB 內部資料多工緩衝處理至 tempdb 資料庫。第二個原因是 DBCC CHECKDB 嘗試要將從磁碟讀取資料的方式最佳化。如果使用相同的磁碟同時進行繁重的工作負載,將會大大降低最佳化的成效,造成執行速度緩慢。

因為 tempdb 資料庫位在磁碟上,對磁碟讀/寫資料等 I/O 作業瓶頸會損害效能。不論系統有何活動,對大型資料庫 (相對於可用記憶體的大小) 執行 DBCC CHECKDB 都會多工緩衝到 tempdb 資料庫。因此,tempdb 資料庫應放置在快速磁碟 (例如 RAID 裝置) 上,與使用者資料庫分開。如需詳細資訊,請參閱<ALTER DATABASE (Transact-SQL)>和<RAID>。

[!附註]

執行 DBCC CHECKDB 會自動對資料庫中的每個資料表執行 DBCC CHECKTABLE,還有 DBCC CHECKALLOC 和 DBCC CHECKCATALOG,因而不必分別執行它們。