Донецкий техникум промышленной автоматики

Як прискорити відновлення великих баз даних в SQL Server

Самородов Федір Анатолійович : Як прискорити відновлення великих баз даних в SQL Server

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

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

Давайте проведемо експеримент. Ось база даних розміром 100 ГБ, під зав'язку заповнена даними.

Всі дані цієї бази лежать в єдиному файлі.

Я зроблю її резервні копії бази і потім відновлю базу з резервної копії. І резервне копіювання і відновлення я проводжу самим звичайним способом без будь-яких хитромудрих налаштувань.

А тепер подивіться уважно на видачу інструкції RESTORE DATABASE:

А тепер подивіться уважно на видачу інструкції RESTORE DATABASE:

Сама команда відновлення повідомляє, що вона виконувалася 3331 секунду - це приблизно 55 хвилин. Але з точки зору зовнішнього спостерігача відновлення бази зайняло більше двох годин! Виходить, що 55 хвилин сервер займався безпосередньо відновленням БД, а ще годину двадцять займався невідомо чим.

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

Якщо немає, то давайте зайдемо в локальну політику безпеки і надамо облікового запису, під якою працює SQL Server дозвіл "виконання завдань з обслуговування томів" (в англійській версії - "perform volume maintenance tasks"). Щоб це подіяло необхідно перезапустити службу SQL Server. Тепер сервер зможе набагато швидше виділяти місце на диску для резервних копій, відновлення баз, а також при розширенні файлів баз і журналів.

Тепер сервер зможе набагато швидше виділяти місце на диску для резервних копій, відновлення баз, а також при розширенні файлів баз і журналів

Повторимо експеримент з відновленням стогігабайтной бази:

Повторимо експеримент з відновленням стогігабайтной бази:

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

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

Детальніше про це Ви зможете дізнатися на курсах SQL Server

А що якщо я скажу, що час відновлення БД можна скоротити більш ніж удвічі за допомогою однієї простої опції?
Вас влаштовує, що ККД дискової підсистеми при відновленні всього 40%?
А як ви думаєте, чому Мікрософт не включив цю настройку відразу при установці сервера?
Може бути, тут причаїлися якісь побічні ефекти?