Dlaczego dodanie użytkownika SQL Server do „Wykonywania zadań konserwacji woluminu” tak bardzo przyspiesza zmianę rozmiaru bazy danych?

17

Jeśli chcę utworzyć bazę danych o pojemności 5 GB

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%)

na moim dysku SSD zajmuje 1 minutę .

Ale kiedy dodam użytkownika SQL Server do Perform volume maintenance tasks

wprowadź opis zdjęcia tutaj

zajmuje tylko 1-2 sekundy .

Dlaczego? Czy ktoś może mi wyjaśnić, jakie są tego przyczyny?

Nikołaj Kostow
źródło
4
Czy downvoters mogą wyjaśnić, dlaczego downvotes? To mi wygląda na dobre pytanie.
Thomas Stringer

Odpowiedzi:

26

Jest to spowodowane natychmiastową inicjalizacją pliku . Krótko mówiąc, SQL Server może skorzystać z tego uprawnienia w przypadku plików danych bazy danych (nie plików dziennika transakcji). Oznacza to, że działa SQL Server nie musi zerować plików danych podczas inicjalizacji.

Bez uprawnienia „Wykonywanie zadań konserwacji woluminu” przyznanego dla konta usługi SQL, podczas tworzenia bazy danych SQL Server musi wyzerować „test.mdf” i „test_log.ldf”.

Po ustawieniu uprawnień „Wykonywanie zadań konserwacji woluminu” SQL Server musi jedynie wyzerować „test_log.ldf”. Znacznie mniejszy narzut, dlatego zminimalizowany czas trwania dlaCREATE DATABASE testu.

Odnośniki
Jak i dlaczego włączyć natychmiastową inicjalizację pliku
Natychmiastową inicjalizację - co, dlaczego i jak?

Thomas Stringer
źródło
ten szew, który jest funkcją, jest niesamowity, ale dlaczego domyślna jest wyłączona?
ahmed abdelqader
1

Nie wpłynie to na pliki .ldf (pliki dziennika), przynajmniej nie zgodnie z artykułem MS

Dlaczego to robisz Prędkość

Dlaczego NIE to zrobić? Możliwe ryzyko bezpieczeństwa. Ktoś może włamać się do twojego urządzenia i ewentualnie odczytać niezerowe przestrzenie pamięci i pobrać te dane. Małe ryzyko, ale wciąż ryzyko. Dlatego domyślnie nie jest włączony.

Szczegółowe objaśnienie: Jak i dlaczego włączyć natychmiastową inicjalizację pliku

Robert Lee
źródło
Uwaga dla czytelnika: jeśli obawiasz się, że ludzie włamują się na twój serwer i czytają stare dane z usuniętego pliku, pozostawienie wyłączonego IFI może być pomocne, ale nie jest to, co uważam za wystarczające. A jeśli masz oprogramowanie, które już nadpisuje usunięte pliki, prawdopodobnie będziesz w stanie włączyć IFI, ponieważ to oprogramowanie powinno już wyzerować miejsce.
RDFozz,
Podczas instalacji (od 2016 r. SQL) jest teraz pole wyboru, aby przyznać to prawo do konta usługi SQL Server, więc myślę, że MS jest nieco bardziej zrelaksowane również w zakresie bezpieczeństwa.
Gareth Lyons,