Почему добавление пользователя SQL Server в «Выполнение задач обслуживания томов» значительно повышает скорость изменения размера базы данных?

17

Если я хочу создать базу данных 5 ГБ с

CREATE DATABASE [test]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'test', FILENAME = N'E:\2012\test.mdf' , SIZE = 5529600KB , FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'test_log', FILENAME = N'E:\2012\test_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)

это занимает 1 минуту на моем SSD.

Но когда я добавляю пользователя SQL Server в Perform volume maintenance tasks

введите описание изображения здесь

это займет всего 1-2 секунды .

Это почему? Может кто-нибудь объяснить мне, каковы причины этого?

Николай Костов
источник
4
Могут ли downvoters объяснить, почему downvotes ?? Это выглядит как хороший вопрос для меня.
Томас Стрингер

Ответы:

26

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

Без привилегии «Выполнять задачи обслуживания томов», предоставленной учетной записи службы SQL, при создании базы данных SQL Server необходимо обнулить «test.mdf» и «test_log.ldf».

С набором разрешений «Выполнять задачи обслуживания томов» SQL Server нужно только обнулить «test_log.ldf». Значительно меньше накладных расходов, поэтому минимизируется длительность CREATE DATABASEтестирования.

Ссылки
Как и почему включить мгновенную инициализацию файла
Мгновенная инициализация - что, почему и как?

Томас Стрингер
источник
этот шов является отличным, но почему по умолчанию он отключен?
Ахмед Абделькадер
1

Это не повлияет на файлы .ldf (файлы журналов), по крайней мере, не в соответствии со статьей MS

Зачем это делать? скорость

Почему бы НЕ сделать это? Возможный риск безопасности. Кто-то может взломать ваш ящик и, возможно, прочитать ненулевое пространство памяти и извлечь эти данные. Небольшой риск, но все же риск. Вот почему он не включен по умолчанию.

Подробное объяснение: как и почему включить мгновенную инициализацию файла

Роберт Ли
источник
Примечание для читателя: Если вы беспокоитесь о том, что люди взломают ваш сервер и прочитают старые данные из удаленного файла, отключение IFI может быть полезным, но вряд ли это будет достаточно. И, если у вас есть программное обеспечение, которое уже перезаписывает удаленные файлы, то вы, вероятно, будете в порядке, чтобы включить IFI, поскольку это программное обеспечение уже должно было обнулить пространство.
RDFozz
Теперь во время установки есть флажок (начиная с SQL 2016), чтобы предоставить это право учетной записи службы SQL Server, поэтому, я думаю, MS немного более расслаблен и в плане безопасности.
Гарет Лайонс