SQL Server instant file initialization (мгновенная инициализация файлов)

SQL Server instant file initialization (мгновенная инициализация файлов)

SQL Server instant file initialization

Основано на статьях: Sergey Syrovatchenko и Самородов Фёдор

Когда SQL Server резервирует новое место на диске, то он инициализирует его нулями. Данное поведение можно отключить и как следствие сократить время выполнения некоторых операций и снизить нагрузку на дисковую подсистему.

Возможность резервирования места на диске без инициализации называется Instant File Initialization (мгновенная инициализация файлов). Фича эта не сильно известна, хотя ее использование стало возможным начиная с SQL Server 2005.

Какие преимущества можно получить от Instant File Initialization:

1. Ускорить создание новой базы данных
2. Сократить задержки и уменьшить время необходимое для увеличения файлов данных
3. Сократить время старта SQL Server, поскольку инициализация tempdb будет более быстрой
4. Сократить время при восстановлении из резервной копии, поскольку перед восстановлением SQL Server резервирует место под файлы, а потом переносит в них информацию из бекапа.

Важно отметить, что Instant File Initialization работает только для файлов данных (MDF и NDF). Файлы лога (LDF) всегда инициализируются нулями.

Как использовать Instant File Initialization?

Все очень просто включается. Открываем SQL Server Configuration Manager и узнаем от какого имени запускается экземпляр нашегоSQL Server.

Далее запускаем в Local Security Policy (Локальная политика безопасности) (cmd > secpol.msc) ищем User Rights Assignment (Название прав пользователя) – Perform volume maintenance tasks (Выполнение задач по обслуживанию томов)

Добавляем нужную нам личность в настройки, как показано на картинке.

Права, которые необходимы для работы Instant File Initialization, экземпляр SQL Server проверяет только один раз – во время старта. Именно поэтому нужно перезапустить SQL Server, чтобы применились наши настройки.

Теперь будем проводить эксперименты…

Для начала давайте проверим… включен ли Instant File Initialization?

Если он выключен, то при выполнении запроса:

в журнале можно увидеть заполнение нулями файлов данных:

Но если Instant File Initialization включен, то нулями заполняется только файл лога:

Если лень смотреть в журнал, то можно воспользоваться следующим скриптом:

На случай, если нужно временно отключить Instant File Initialization, то можно включить флаг трассировки 1806. Но как показывается практика, возможность использовать эту функциональность сильно экономит время и сокращает дисковую нагрузку.

Вот пара тестовых примеров и время на их выполнение с Instant File Initialization и без:

 

Более визуальный пример от Фёдора Самородова:

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

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

На самом деле это время сервер потратил на выделение места под восстанавливаемую базу. Сложно поверить, но это заняло в полтора раза больше времени, чем полезный процесс.

Повторим эксперимент с восстановлением базы после включения Instant File Initialization:

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

Использование Instant File Initialization – потрясающий способ уменьшить время простоя при восстановлении после сбоя. Создание файлов не будет занимать долго времени для инициации их нулями до того, как начнётся сама операция восстановления. Так что возьмете на вооружение такую полезную возможность как Instant File Initialization.

Кстати, для SQL Server 2016 CTP3.0 можно включить Instant File Initialization еще на этапе установки:

***   ***   ***   ***   ***   ***   ***   ***   ***   ***   ***   ***
Полезные Скрипты

Рубрика Проверь себя

Ссылка на наш канал YouTube

Запись опубликована в рубрике В помощь администратору с метками . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Войти с помощью: