SQL Server: CheckDB работает достаточно быстро в одной базе данных, мучительно медленно в другой

Это для тебя, Пол!:-)

У меня есть клиент, у которого есть две базы данных для двух его офисов. Оба имеют примерно одинаковый размер (около 10 ГБ), оба размещены на одном и том же профессиональном хостинг-сайте - так что давай или бери, они одинаковые.

Тем не менее, база данных А завершает свою Check database integrity шаг в плане обслуживания менее чем за 30 минут, в то время как база данных B даже не завершается - администратор базы данных прервал процесс после более чем 3 часов работы.

Эти шаги выполняются "в нерабочее время", поэтому на серверах не должно быть никаких значительных действий.

Любое объяснение? Любая идея, что проверить или где искать причину для этого (и способ ее решения)? Там нет сообщений об ошибках или что-нибудь.....

2 ответа

Решение

DBCC CHECKDB не запускает проверку БД. На самом деле это набор команд, которые проверяют различные аспекты базы данных. Соответствующая часть от BOL:

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

Если одна БД занимает 30 минут, а другая -> 3 часа, вполне вероятно, что это команда CHECKTABLE. Особенно если размеры баз данных резко отличаются.

Извините, запустите проверку целостности базы данных на медленной базе данных и LET IT FINISH. Вероятно, он обнаружил проблемы и начал вдаваться в детали и - это заняло намного больше времени, чем работа с базой данных ok.

Возможно, выполните последовательность действий для проверки базы данных из командной строки;) DBCC CHECKDB имеет некоторые выходные данные, которые могут вам помочь;) Планы обслуживания немного сложнее отладить.

Другие вопросы по тегам