Если я хочу создать базу данных 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 секунды .
Это почему? Может кто-нибудь объяснить мне, каковы причины этого?
sql-server
performance
Николай Костов
источник
источник
Ответы:
Это из-за мгновенной инициализации файла . Короче говоря, SQL Server может использовать эту привилегию для файлов данных базы данных (не файлов журналов транзакций). Это означает, что при инициализации SQL Server не нужно обнулять файл (ы) данных.
Без привилегии «Выполнять задачи обслуживания томов», предоставленной учетной записи службы SQL, при создании базы данных SQL Server необходимо обнулить «test.mdf» и «test_log.ldf».
С набором разрешений «Выполнять задачи обслуживания томов» SQL Server нужно только обнулить «test_log.ldf». Значительно меньше накладных расходов, поэтому минимизируется длительность
CREATE DATABASE
тестирования.Ссылки
Как и почему включить мгновенную инициализацию файла
Мгновенная инициализация - что, почему и как?
источник
Это не повлияет на файлы .ldf (файлы журналов), по крайней мере, не в соответствии со статьей MS
Зачем это делать? скорость
Почему бы НЕ сделать это? Возможный риск безопасности. Кто-то может взломать ваш ящик и, возможно, прочитать ненулевое пространство памяти и извлечь эти данные. Небольшой риск, но все же риск. Вот почему он не включен по умолчанию.
Подробное объяснение: как и почему включить мгновенную инициализацию файла
источник