Erstellen Sie eine neue Datenbank mit großer Anfangsgröße

8

Ich möchte eine neue Datenbank mit einer 200- .mdfGB- Datendatei ( ) und einer 50-GB-Protokolldatei ( .ldf) erstellen .

Aber es ist sehr langsam (es ist ungefähr 15 Minuten und hat noch nicht erstellt). und es ist sehr zeitaufwändig. Ist das normal? Wenn ja, was macht es, das braucht Zeit? Kann ich die Erstellungsgeschwindigkeit erhöhen?

Ich verwende SQL Server 2008 R2, Windows Server 2008R2, 16 GB RAM (das habe ich auf 12 GB in ssms beschränkt) und Core i7 Cpu

Mehrdad Kamelzadeh
quelle
2
Bei der Erstellung einer großen Datenbank sind die Festplatten-E / A weitaus stärker eingeschränkt als alles andere. Wenn IFI aktiviert ist (gemäß den Antworten), können Sie das Initialisieren (Nullstellen) der Datendatei überspringen, unabhängig davon, was Sie zum Protokollieren der Protokolldatei benötigen. Wenn Sie eine typische Consumer-Spinny-Festplatte verwenden, kann dies allein für die Protokolldatei bis zu einer halben Stunde dauern.
Simon Righarts

Antworten:

17

Sofern Sie nicht die sofortige Dateiinitialisierung verwenden , muss SQL Server alle Sektoren für die Dateien auf Null setzen. Dies ist ein sehr zeitaufwändiger Vorgang, insbesondere für 250 GB (Daten + Protokoll). Um die Arbeit zu beschleunigen, aktivieren Sie diese Funktion, und SQL Server setzt den Speicherplatz für die Datendateien nicht auf Null.

Bitte beachten Sie, dass SQL Server die Protokolldatei immer auf Null setzt , sodass Sie dadurch immer noch eingeschränkt werden. Eine weitere Referenz für die Initialisierung von Protokolldateien

Mike Fal
quelle
Was genau passiert wann auf der Festplatte zero out all sectorsund warum setzt SQL die Protokolldatei immer auf Null? Was ist der Vorteil davon?
Mehrdad Kamelzadeh
Dies ist der Vorgang zum Löschen von Daten auf Ihrer Festplatte. Grundsätzlich überspringt die sofortige Dateiinitialisierung dies. Aufgrund der internen Funktionsweise der Protokolldatei muss SQL Server sie jedoch vollständig auf Null setzen, um sie verwenden zu können. Weitere Details dazu finden Sie hier .
Mike Fal
@MehrdadKamelzadeh SQL Server, der die Datei auf Null setzt, gilt NUR für Datendateien . Protokolldateien dürfen nicht null initialisiert werden. Siehe ( sqlskills.com/blogs/paul/… ). Siehe auch Wie Sie feststellen können, ob die sofortige Initialisierung aktiviert ist. ( sqlskills.com/blogs/paul/… ).
Kin Shah
1
@Kin - Protokolldateien müssen mit Null initialisiert sein, aber mit IFI können Sie die Nullinitialisierung der Datendateien überspringen.
Simon Righarts
7

Wenn Sie ausführen, secpol.mscwie lautet der Wert für Lokale Richtlinien, Zuweisung von Benutzerrechten Perform Volume Maintenance Tasks?

Ich gehe an dieser Stelle davon aus, dass das SQL Server-Dienstkonto nicht über dieses Recht verfügt und daher das MDF und das LDF auf Null setzt. Ich kann nicht umgehen, dass die LDF auf Null gesetzt wird, aber Sie können sie für die MDF überspringen.

SecPol

Referenz - http://timradney.com/2012/05/30/instant-file-initialization-for-sql-server-performance/

billinkc
quelle