SQL Server File + Filegroup Fill Strategy
In SQL Server (Version 2005 und 2008) können Files in Filegroups dazu verwendet werden um eine bessere I/O Leistung zu erzielen.
Files die beim Erstellen der Datenbanken angelegt werden, befüllt SQL Server proportional. Das heisst Daten werden gleichmässig auf alle Files verteilt. Dies ist jedoch nur so lange der Fall, bis durch einen „autogrowth“ die Files automatisch mit definierten Grössen zu wachsen beginnen. Bei „autogrowth“ wachsen nicht alle Files gleichzeitig um den definierten Wert an, sondern im „round robin“ Verfahren. Das heisst jeweils 1 File das dann befüllt wird und dann das nächste File und so weiter. Somit ist die gleichmässige Füllung und Nutzung der Files nicht mehr gewährleistet.
Bei SQL Server 2005 gibt es nur eine Möglichkeit dies zu verhindern;
à kein „autogrowth“ verwenden und alle Files jeweils bei Bedarf gleichzeitig (manuell oder durch geeignetes Monitoring mit entsprechender Aktion) zu vergrössern.
Das Risiko dabei ist allerdings, dass beim Versagen des Monitoring eine Datenbank zu Stillstand kommen kann.
Bei SQL Server 2008 gilt grundsätzlich auch das oben beschriebene Szenario. Allerdings gibt es bei SQL Server 2008 eine neue Möglichkeit;
à durch das Traceflag 1117 ist SQL Server 2008 in der Lage, auch bei „autogrowth“ die Files gleichmässig und gleichzeitig zu verwenden.
Es ist dabei allerdings zu beachten, dass „fast file initialization“ möglich sein sollte, um beim durch „autogrowth“ ausgelösten Wachstum nicht in timeouts zu laufen.
Zusammenfassend ist zu empfehlen, dass die Datenbanken nach wie vor mit „autogrowth“ konfiguriert werden. Dabei sind Wachstums-Schritte zu wählen, die „vernünftige“ Grössen haben, damit nicht zu viele Daten in einzelne Files gespeichert werden.
Bei grossen Datenbanken ist durch geeignetes Monitoring möglichst ein kontrolliertes (manuelles oder automatisiertes) Wachstum vorzunehmen um das gleichmässige Speichern von Daten zu halten.
Bei SQL Server 2008 kann das Traceflag 1117 eingesetzt werden um die gleichmässige File-Nutzung zu gewährleisten.