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
zajmuje tylko 1-2 sekundy .
Dlaczego? Czy ktoś może mi wyjaśnić, jakie są tego przyczyny?
sql-server
performance
Nikołaj Kostow
źródło
źródło
Odpowiedzi:
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 dla
CREATE DATABASE
testu.Odnośniki
Jak i dlaczego włączyć natychmiastową inicjalizację pliku
Natychmiastową inicjalizację - co, dlaczego i jak?
źródło
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
źródło