Verwenden von Dateien und Dateigruppen

In SQL Server wird eine Datenbank einem Satz von Betriebssystemdateien zugeordnet.Daten und Protokollinformationen werden nie in derselben Datei gemischt, und die einzelnen Dateien werden immer nur von einer einzigen Datenbank verwendet. Dateigruppen sind mit Namen versehene Sammlungen von Dateien. Sie werden zur Vereinfachung der Verteilung von Daten und Erleichterung von administrativen Tasks, wie z. B. Sicherungs- und Wiederherstellungsvorgängen verwendet. Weitere Informationen finden Sie unter Architektur von Dateien und Dateigruppen.

Füllstrategie für Dateien und Dateigruppen

Dateigruppen verwenden eine proportionale Füllstrategie über alle Dateien innerhalb einer Dateigruppe hinweg. Wenn Daten in die Dateigruppe geschrieben werden, verteilt SQL Server Database Engine (Datenbankmodul) die zu schreibenden Daten auf alle Dateien innerhalb der Dateigruppe. Der Umfang der Daten, die in jede einzelne Datei geschrieben werden, ist dabei proportional zu dem freien Speicherplatz innerhalb jeder Datei. Die Daten werden also nicht so lange in die erste Datei geschrieben, bis diese gefüllt ist. Dann werden Daten in die nächste Datei geschrieben. Wenn Datei f1 über 100 MB und Datei f2 über 200 MB freien Speicherplatz verfügt, werden ein Block aus Datei f1, zwei Blöcke aus Datei f2 usw. zugeordnet. Auf diese Weise werden beide Dateien zum ungefähr gleichen Zeitpunkt vollständig gefüllt, und es wird eine einfache Aufteilung der Daten erzielt.

Sobald alle Dateien in einer Dateigruppe vollständig gefüllt sind, erweitert Database Engine (Datenbankmodul) eine Datei nach der anderen im Round-Robin-Verfahren, um weitere Daten aufnehmen zu können (vorausgesetzt, für die Datenbank wurde die automatische Vergrößerung aktiviert). Nehmen Sie z. B. an, eine Dateigruppe enthält drei Dateien, und für jede Datei wurde die automatische Vergrößerung festgelegt. Wenn der Speicherplatz in allen Dateien der Dateigruppe vollständig verbraucht ist, wird nur die erste Datei erweitert. Wenn die erste Datei gefüllt ist und keine Daten mehr in die Dateigruppe geschrieben werden können, wird die zweite Datei vergrößert. Wenn die zweite Datei gefüllt ist und keine Daten mehr in die Dateigruppe geschrieben werden können, wird die dritte Datei vergrößert. Wenn die dritte Datei gefüllt ist und keine Daten mehr in die Dateigruppe geschrieben werden können, wird erneut die erste Datei vergrößert usw.

Verbessern der Datenbankleistung

Mithilfe von Dateien und Dateigruppen wird die Datenbankleistung verbessert, da eine Datenbank über mehrere Datenträger, Datenträgercontroller oder RAID-Systeme (Redundant Array of Independent Disks; redundantes Festplattenarray) hinweg erstellt werden kann. Wenn Ihr Computer z. B. über vier Datenträger verfügt, können Sie eine Datenbank erstellen, die drei Datendateien und eine Protokolldatei umfasst, wobei sich jede Datei auf einem anderen Datenträger befindet. Beim Zugriff auf die Daten können vier Schreib-/Leseköpfe gleichzeitig auf die Daten zugreifen. Das beschleunigt die Datenbankvorgänge. Weitere Informationen zu Agents finden Sie unter Datenbankleistung.

Dateien und Dateigruppen ermöglichen darüber hinaus das Verteilen von Daten, da eine Tabelle in einer bestimmten Dateigruppe erstellt werden kann. Auf diese Weise wird die Leistung gesteigert, da sämtliche E/A-Operationen für eine bestimmte Tabelle auf einen bestimmten Datenträger gerichtet werden können. So kann z. B. eine Tabelle, auf die häufig zugegriffen wird, in einer Datei in einer Dateigruppe platziert werden, die sich auf dem einen Datenträger befindet; eine weitere, weniger häufig verwendete Tabelle in der Datenbank kann in den anderen Dateien in einer anderen Dateigruppe platziert werden, die sich auf einem zweiten Datenträger befindet.

Implementieren von Sicherungs- und Wiederherstellungsstrategien

Aus mehreren Dateigruppen gebildete Datenbanken können schrittweise wiederhergestellt werden.Diese schrittweise Wiederherstellung funktioniert mit allen Wiederherstellungsmodellen, ist jedoch flexibler in Bezug auf die vollständigen und die massenprotokollierten Modelle als in Bezug auf das einfache Modell. Das schrittweise Wiederherstellungsszenario umfasst alle drei Phasen der Wiederherstellung: Kopieren von Daten, Wiederholen bzw. Rollforward und Rückgängig machen bzw. Rollback. Weitere Informationen finden Sie unter Ausführen der schrittweisen Wiederherstellung.

Wenn mehrere Dateigruppen verwendet werden, können die Dateien in einer Datenbank einzeln gesichert und wiederhergestellt werden. Beim einfachen Wiederherstellungsmodell sind Dateisicherungen nur für schreibgeschützte Dateien zulässig. Durch das Verwenden von Dateigruppen kann die Wiederherstellung beschleunigt werden, da Sie nicht die gesamte Datenbank, sondern nur die beschädigten Dateien wiederherstellen. Wenn beispielsweise eine Datenbank aus mehreren Dateien besteht, die auf verschiedenen Datenträgern gespeichert sind, und bei einem Datenträger ein Fehler auftritt, muss nur die Datei auf dem fehlerhaften Datenträger wiederhergestellt werden. Weitere Informationen finden Sie unter BACKUP (Transact-SQL).

Regeln für das Entwerfen von Dateien und Dateigruppen

Für Dateien und Dateigruppen gelten die folgenden Regeln:

  • Eine Datei oder Dateigruppe kann nicht von mehreren Datenbanken verwendet werden. So können z. B. die Dateien sales.mdf und sales.ndf, die Daten und Objekte der sales-Datenbank enthalten, von keiner anderen Datenbank verwendet werden.

  • Eine Datei kann nur Mitglied einer einzigen Dateigruppe sein.

  • Transaktionsprotokolldateien können niemals Teil einer Dateigruppe sein.

Empfehlungen

Es folgen einige allgemeine Empfehlungen für die Arbeit mit Dateien und Dateigruppen:

  • Die meisten Datenbanken funktionieren problemlos mit nur einer einzigen Datendatei und einer einzigen Transaktionsprotokolldatei.

  • Wenn Sie mehrere Dateien verwenden, erstellen Sie eine zweite Dateigruppe für die zusätzlichen Dateien und legen diese Dateigruppe als Standarddateigruppe fest. Auf diese Weise enthält die primäre Datei nur die Systemtabellen und -objekte.

  • Um eine optimale Leistung zu erzielen, sollten Sie Dateien oder Dateigruppen auf so vielen unterschiedlichen verfügbaren lokalen physischen Datenträgern wie möglich erstellen. Verteilen Sie Objekte, die viel Speicherplatz beanspruchen, auf unterschiedliche Dateigruppen.

  • Verwenden Sie Dateigruppen, um Objekte auf bestimmte physische Datenträger verteilen zu können.

  • Verteilen Sie unterschiedliche Tabellen, die in denselben Verknüpfungsabfragen verwendet werden, auf unterschiedliche Dateigruppen. Auf diese Weise wird die Leistung verbessert, da die verknüpften Daten in parallelen Datenträger-E/A-Operationen gesucht werden können.

  • Verteilen Sie Tabellen, auf die häufig zugegriffen wird, und die nicht gruppierten Indizes, die zu diesen Tabellen gehören, auf unterschiedliche Dateigruppen. Hierdurch wird die Leistung verbessert, da auf Dateien, die sich auf unterschiedlichen physischen Datenträgern befinden, parallele E/A-Operationen ausgeführt werden können.

  • Platzieren Sie die Transaktionsprotokolldatei oder -dateien nicht auf demselben physischen Datenträger wie die anderen Dateien und Dateigruppen.