Поделиться через


Оптимизация производительности инструкции DBCC CHECKDB

Инструкция DBCC CHECKDB и родственные инструкции обычно должны считывать каждую размещенную страницу с диска в память таким образом, чтобы она могла быть проверена. Выполнение инструкции DBCC CHECKDB при большой активности в системе снижает производительность выполнения инструкций DBCC по двум причинам. Первая: малый объем доступной памяти. Компонент SQL Server Database Engine вынужден поместить в очередь некоторые из внутренних данных инструкции DBCC CHECKDB в базу данных tempdb. Вторая: инструкция DBCC CHECKDB пытается оптимизировать способ чтения данных с диска. Если интенсивная рабочая нагрузка будет использовать тот же самый диск, оптимизация будет гораздо менее эффективной, что приведет к более медленному выполнению.

Поскольку база данных tempdb находится на диске, узким местом являются операции ввода-вывода, поскольку запись и чтение данных с диска снижают производительность. Независимо от загруженности системы, выполнение инструкции DBCC CHECKDB в отношении больших баз данных (относительно размера доступной памяти) приводит к буферизации данных в базе данных tempdb. Поэтому база данных tempdb должна быть размещена на быстром диске или дисках, например на устройстве RAID, отдельно от пользовательских баз данных. Дополнительные сведения см. в разделах ALTER DATABASE (Transact-SQL) и RAID.

ПримечаниеПримечание

Выполнение инструкции DBCC CHECKDB автоматически выполняет для каждой таблицы в базе данных инструкцию DBCC CHECKTABLE, а также инструкции DBCC CHECKALLOC и DBCC CHECKCATALOG, что устраняет необходимость выполнять их по отдельности.

См. также

Справочник