Чому додавання користувача 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
Чи можете пояснити, будь ласка, пояснити, чому питомник ?? Це виглядає для мене прекрасним питанням.
Томас Стрінгер

Відповіді:


26

Це через миттєву ініціалізацію файлів . Коротше кажучи, SQL Server може скористатися цим привілеєм для файлів даних бази даних (а не файлів журналів транзакцій). Це означає, що під час ініціалізації SQL Server не повинен нульовий файл (и).

Без привілею "Виконання завдань з обслуговування обсягу", наданого обліковому запису служби SQL, після створення бази даних SQL Server потребує нульових "test.mdf" та "test_log.ldf".

Якщо набір дозволів "Виконати завдання з обслуговування обсягу" набір дозволів, SQL Server потрібно лише нульовий "test_log.ldf". Значно менші накладні витрати, тому мінімізовано тривалість CREATE DATABASEтестування.

Список літератури
Як і навіщо ввімкнути миттєву ініціалізацію файлів
Миттєву ініціалізацію - що, чому і як?


цей шов, який є особливістю, є приголомшливим, але чому його за замовчуванням вимкнено?
ахмед abdelqader

1

Це не вплине на .ldf файли (файли журналів), принаймні не відповідно до статті MS

Навіщо це робити? Швидкість

Чому НЕ робити це? Можливий ризик безпеки. Хтось міг би зламати вашу скриньку і, можливо, прочитати ненульові місця пам’яті та отримати ці дані. Невеликий ризик, але все-таки ризик. Ось чому він не включений за замовчуванням.

Детальне пояснення: Як і чому ввімкнути миттєву ініціалізацію файлів


Примітка читачеві: Якщо ви стурбовані людьми, які зловживають ваш сервер та читають старі дані зі видаленого файлу, залишати IFI вимкненим, але навряд чи я вважаю достатньою. І якщо у вас є програмне забезпечення, яке вже перезаписує видалені файли, то, ймовірно, буде гаразд, щоб увімкнути IFI, оскільки це програмне забезпечення повинно вже нульове місце.
RDFozz

Зараз встановлено прапорець під час встановлення (SQL 2016 далі), щоб надати це право обліковому запису служби SQL Server, тому я думаю, що MS трохи спокійніші і на фронті безпеки.
Гарет Ліон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.