Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

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

Извините, запустите проверку целостности базы данных на медленной базе данных и ДАВАЙТЕ ЗАВЕРШИТЬ. Вероятно, он обнаружил проблемы и начал вдаваться в подробности, и это заняло гораздо больше времени, чем запуск исправной базы данных.

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