Инициализация мгновенного файла базы данных

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

В этой статье вы узнаете о мгновенной инициализации файлов (IFI) и о том, как ускорить рост файлов базы данных SQL Server.

По умолчанию файлы данных и журналов инициализируются, чтобы перезаписать все существующие данные на диске, оставшиеся после удаленных файлов. Файлы данных и журналов сначала инициализируются путем обнуления (заполнения нулями) при выполнении следующих операций:

  • Создается база данных .
  • Добавление файлов данных и журналов к существующей базе данных.
  • Увеличение размера существующего файла (включая операции автоувеличения).
  • Восстановление базы данных или файловой группы.

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

В База данных SQL Azure и Управляемый экземпляр SQL Azure инициализация мгновенного файла доступна только для файлов журнала транзакций.

Мгновенное инициализация файлов и журнал транзакций

Область применения: SQL Server 2022 (16.x) и более поздних версий, а также База данных SQL Azure и Управляемый экземпляр SQL Azure.

Исторически файлы журнала транзакций не могут быть инициализированы мгновенно. Однако начиная с SQL Server 2022 (16.x) (все выпуски) и в База данных SQL Azure и Управляемый экземпляр SQL Azure, автоматическое увеличение журналов транзакций до 64 МБ может воспользоваться мгновенным инициализацией файлов. Размер автоматического увеличения по умолчанию для новых баз данных составляет 64 МБ. События автоматического увеличения файла журнала транзакций, превышающие 64 МБ, не могут воспользоваться мгновенной инициализацией файлов.

Мгновенное инициализация файлов допускается для роста журнала транзакций в базах данных с включенным прозрачным шифрованием данных (TDE) из-за того, как расширяется файл журнала транзакций, и тот факт, что журнал транзакций записывается в последовательный способ.

  • Мгновенное инициализация файлов используется для уровней общего назначения и критически важный для бизнеса уровней База данных SQL Azure и Управляемый экземпляр SQL Azure только для роста файлов журнала транзакций.
  • Мгновенное инициализация файлов не настраивается в База данных SQL Azure и Управляемый экземпляр SQL Azure.

Включить мгновенную инициализацию файлов

Мгновенное инициализация файлов данных доступна только в том случае, если предоставлена SE_MANAGE_VOLUME_NAMEучетная запись запуска службы SQL Server. Участники группы администраторов Windows обладают этим правом и могут предоставить его другим пользователям, добавив их в политику безопасности Выполнение задач обслуживания томов . Право SE_MANAGE_VOLUME_NAME не требуется для мгновенной инициализации событий роста до 64 МБ в журнале транзакций, который был представлен в выпуске SQL Server 2022 (16.x).

Внимание

Некоторые функции, такие как прозрачное шифрование данных (TDE), могут препятствовать мгновенной инициализации файлов. Начиная с SQL Server 2022 (16.x), а также на База данных SQL Azure и Управляемый экземпляр SQL Azure, IFI разрешен в журнале транзакций. Дополнительные сведения см. в статье об инициализации мгновенного файла и журнале транзакций.

Примечание.

Начиная с SQL Server 2016 (13.x), это разрешение может быть предоставлено учетной записи службы во время установки во время установки.

Если используется установка командной строки, добавьте /SQLSVCINSTANTFILEINIT аргумент или проверка флажок Предоставить привилегию задачи обслуживания тома в службе SQL Server ядро СУБД в мастере установки.

Предоставление учетной записи разрешения Perform volume maintenance tasks .

  1. На компьютере, где будет создан файл данных, откройте приложение Локальная политика безопасности (secpol.msc).

  2. В левой области разверните локальные политики и выберите назначение прав пользователя.

  3. На правой панели дважды щелкните Выполнение задач по обслуживанию томов.

  4. Выберите " Добавить пользователя или группу " и добавьте учетную запись, которая запускает службу SQL Server.

  5. Нажмите кнопку "Применить", а затем закройте все диалоговые окна "Локальная политика безопасности".

  6. Перезапустите службу SQL Server.

  7. Проверьте журнал ошибок SQL Server при запуске.

    Область применения: SQL Server (начиная с SQL Server 2012 (11.x) с пакетом обновления 4 (SP4), SQL Server 2014 (12.x) с пакетом обновления 2 (SP2) и SQL Server 2016 (13.x) и более поздних версий.

    1. Если предоставлена SE_MANAGE_VOLUME_NAMEучетная запись запуска службы SQL Server, информационное сообщение, похожее на следующий пример, регистрируется:

      Database Instant File Initialization: enabled. For security and performance considerations see the topic 'Database Instant File Initialization' in SQL Server Books Online. This is an informational message only. No user action is required.

    2. Если учетная запись запуска службы SQL Server не предоставлена SE_MANAGE_VOLUME_NAME, информационное сообщение, похожее на следующий пример, регистрируется:

      Database Instant File Initialization: disabled. For security and performance considerations see the topic 'Database Instant File Initialization' in SQL Server Books Online. This is an informational message only. No user action is required.

    Примечание.

    В SQL Server используйте значение instant_file_initialization_enabled в динамическом представлении управления sys.dm_server_services , чтобы определить, включена ли мгновенное инициализация файлов для вашего экземпляра.

Вопросы безопасности

Мы советуем включить мгновенную инициализацию файлов, так как преимущества перевешивают риски безопасности.

При использовании мгновенной инициализации файлов удаленный диск перезаписывается только при записи новых данных в файлы. Поэтому доступ к удаленному содержимому может получить неавторизованный субъект, пока в эту область файла данных не будут записаны другие данные.

Когда файл базы данных подключен к экземпляру SQL Server, риск раскрытия информации уменьшается благодаря списку управления доступом на уровне пользователей (DACL) в файле. DACL разрешает доступ к файлу только учетной записи службы SQL Server и локальному администратору. Однако при отключении файла доступ к нему может получить пользователь или служба, у которых нет SE_MANAGE_VOLUME_NAME.

Аналогичные соображения существуют в следующих случаях.

  • Создается резервная копия базы данных. Если файл резервной копии не защищен соответствующим DACL, удаленный контент может стать доступным для несанкционированного пользователя или службы.

  • Файл расширяется с помощью IFI. Администратор SQL Server потенциально может получить доступ к содержимому необработанных страниц и просматривать ранее удаленное содержимое.

  • Файлы базы данных размещаются в сети хранения. Также возможно, что сеть области хранения всегда представляет новые страницы как предварительно инициализированные, а операционная система повторно инициализирует страницы может быть ненужными.

Если вероятность раскрытия удаленного содержимого является серьезной проблемой, необходимо выполнить одно следующее действие или оба.

  • Всегда проверяйте, что все отсоединенные файлы данных и резервные копии имеют ограничивающие DACL.

  • Отключите мгновенное инициализацию файлов для экземпляра SQL Server. Для этого отмените учетную SE_MANAGE_VOLUME_NAME запись запуска службы SQL Server.

    Примечание.

    Отключение увеличивает время выделения файлов для файлов данных и влияет только на создаваемые или увеличивающиеся в размере файлы после отзыва прав пользователя.

Право пользователя SE_MANAGE_VOLUME_NAME

Привилегии SE_MANAGE_VOLUME_NAME пользователя можно назначить в Windows Администратор istrative Tools, applet локальной политики безопасности. В разделе Локальные политики выберите Назначение прав пользователя и измените свойство Выполнение задач по обслуживанию томов.

Замечания, связанные с быстродействием

Процесс инициализации файла базы данных записывает нули в новые регионы файла при инициализации. Длительность этого процесса зависит от размера инициализированной части файла и времени отклика и емкости системы хранения. Если инициализация занимает много времени, могут появиться следующие сообщения, записанные в журнале ошибок SQL Server и журнале приложений.

Msg 5144
Autogrow of file '%.*ls' in database '%.*ls' was cancelled by user or timed out after %d milliseconds. Use ALTER DATABASE to set a smaller FILEGROWTH value for this file or to explicitly set a new file size.
Msg 5145
Autogrow of file '%.*ls' in database '%.*ls' took %d milliseconds. Consider using ALTER DATABASE to set a smaller FILEGROWTH for this file.

Длительное автоматическое увеличение файла базы данных и /или файла журнала транзакций может привести к проблемам с производительностью запросов. Это связано с тем, что операция, требующая автоматического увеличения файла в ресурсах, таких как блокировки или блокировки во время операции увеличения файла. Вы можете увидеть длительные ожидания на блокировках страниц выделения. Операция, требующая длительного автоматического увеличения, показывает тип PREEMPTIVE_OS_WRITEFILEGATHERожидания.