Как ускорить восстановление больших баз данных в SQL Server

Самородов Федор Анатольевич: Как ускорить восстановление больших баз данных в SQL Server

СФА

Все администраторы знают, что восстановление базы данных из резервной копии - процесс не быстрый. Особенно, если база большая.

А что если я скажу, что время восстановления БД можно сократить более чем вдвое при помощи одной простейшей опции?

Давайте проведём эксперимент. Вот база данных размером 100 ГБ, под завязку заполненная данными.

Все данные этой базы лежат в единственном файле.

Я сделаю резервную копию этой базы и затем восстановлю базу из резервной копии. И резервное копирование и восстановление я провожу самым обыкновенным способом без каких-либо хитроумных настроек.

А теперь посмотрите внимательно на выдачу инструкции RESTORE DATABASE:

Сама команда восстановления сообщает, что она выполнялась 3331 секунду - это примерно 55 минут. Но с точки зрения внешнего наблюдателя восстановление базы заняло больше двух часов! Получается, что 55 минут сервер занимался непосредственно восстановлением БД, а ещё час двадцать занимался неизвестно чем.

На самом деле это время сервер потратил на выделение места под восстанавливаемую базу. Сложно поверить, но это заняло в полтора раза больше времени, чем полезный процесс. Вас устраивает, что КПД дисковой подсистемы при восстановлении всего 40%?

Если нет, то давайте зайдём в локальную политику безопасности и предоставим учётной записи, под которой работает SQL Server разрешение "выполнение задач по обслуживанию томов" (в английской версии - "perform volume maintenance tasks"). Чтобы это подействовало необходимо перезапустить службу SQL Server. Теперь сервер сможет гораздо быстрее выделять место на диске для резервных копий, восстановления баз, а также при расширении файлов баз и журналов.

Повторим эксперимент с восстановлением стогигабайтной базы:

Теперь база действительно восстанавливается за 55 минут - это почти в два с половиной раза быстрее, чем при настройках по умолчанию!

А как вы думаете, почему Микрософт не включил эту настройку сразу при установке сервера? Ведь преимущества очевидны! Может быть, тут притаились какие-то побочные эффекты? Ответ на это вопрос вы узнаете на наших курсах... А также вы узнаете о других интересных настройках, которые могут заметно поднять производительность сервера баз данных. Приходите учиться в Специалист - будет интересно! ;)

Подробнее об этом Вы сможете узнать на курсах SQL Server

envelope

Спасибо! Вам на e-mail отправлено письмо со ссылкой для подтверждения

Если письмо не пришло, поищите его в папке со спамом или повторите подписку

email-checked.png

Вы подписались на рассылку