logo Фёдор Самородов

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

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

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

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

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

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

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

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

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

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

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

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

Предыдущий Следующий
Все посты проекта
0 комментариев

Подарить подписку

Будет создан код, который позволит адресату получить бесплатный для него доступ на определённый уровень подписки.

Оплата за этого пользователя будет списываться с вашей карты вплоть до отмены подписки. Код может быть показан на экране или отправлен по почте вместе с инструкцией.

Будет создан код, который позволит адресату получить сумму на баланс.

Разово будет списана указанная сумма и зачислена на баланс пользователя, воспользовавшегося данным промокодом.

Добавить карту
0/2048