Die Kapazität einer SQL-Server-Datenbank richtig planen

Interne Fragmentierung verhindern, Wartungsfenster nutzen und gutes Timing: Ansätze für die Planung der Kapazität einer SQL Server Datenbank.

Dieser Artikel behandelt

DBMS

Ein typisches Szenario im Leben eines Datenbankadministrators: Drei Uhr morgens, das Smartphone brummt. Die Datenbank im Unternehmen ist voll. Der Admin soll das in Ordnung bringen. 

Da heute der Datenbedarf schnell wächst, ist es nicht ungewöhnlich, dass die Kapazität von Datenbanken nicht ausreicht und manueller Aufwand notwendig ist. Die meisten Datenbankadministratoren konfigurieren ihre Datenbanken auf automatische Erweiterung. Damit verbunden sind aber Leistungseinbußen. Es gibt bessere Ansätze für die Planung der Kapazität einer SQL-Server-Datenbank.

Vorsicht mit automatischer Vergrößerung

Datenbankadministratoren sollten sich nicht einzig allein auf das automatische Erweitern der Datenbank verlassen. Natürlich sorgen sie damit für Ausfallsicherheit. Andererseits akzeptieren die Admins dadurch erhebliche Leistungseinbußen. Zudem begünstigen sie die Fragmentierung der Datenbank-Dateien, da bei der automatischen Vergrößerung zu einem bestimmten Zeitpunkt eine größere Menge an Speicherplatz zugewiesen wird.

Stattdessen sollten Datenbankadministratoren die Kapazität proaktiv verwalten. Behalten sie den verfügbaren Speicherplatz und die Trends beim Datenwachstum stets im Auge und treffen sie die richtigen Maßnahmen bei deren Wartung, damit die Datenbank effizient genutzt wird. 

Stellen sie die automatische Vergrößerung so ein, dass sie nur einen geringen Prozentsatz an Speicherplatz benötigt, ist dieser Vorgang selten mehr als einmal pro Tag oder Woche notwendig. Auf diese Weise haben sie genug Zeit für die manuelle Verwaltung der Datenbank, bevor diese weiteres Wachstum benötigt.

Wartungsfenster nutzen

Die beste Zeit für die Erweiterung einer Datenbank ist während eines Wartungsfensters, in dem die Datenbank sowieso offline geschaltet ist. Ergänzen Sie dann genügend Speicherplatz, um die Zeit bis zum nächsten Wartungstermin zu überbrücken. Während des Wartungsfensters weisen Sie den Dateien der Datenbank neuen Speicherplatz zu, schließen die Datenbank und lassen Windows das New Technology File System (NTFS) defragmentieren, auf dem die Datenbank aufsetzt.

Im Idealfall sollte eine Datenbank-Datei im NTFS-System zusammenhängenden Speicherplatz belegen. Dies ist besonders wichtig, wenn die Datenbank sich in einem Storage Area Network (SAN) oder RAID-Array befindet. Es ist für das Storage-Subsystem einfacher, die Daten innerhalb der Dateistruktur der Datenbank zu bewegen, wenn die Daten zusammenhängende physische Sektoren belegen.

Bei den Datenbank-Dateien kann es sich um eine primäre MDF-Datei, eine sekundäre NDF-Datei oder eine LDF-Protokoll-Datei handeln. Die primäre MDF-Datendatei enthält die Startinformationen für die Datenbank und verweist auf die anderen Dateien in der Datenbank. Sekundäre NDF-Datendateien sind optional, benutzerdefiniert und speichern Benutzerdaten. 

Damit lassen sich Daten auf mehrere Datenträger verteilen, indem jede Datei auf einem anderen Datenträger gespeichert wird. Wenn eine Datenbank die maximal zulässige Größe für eine einzige Datei überschreitet, kann man die Datenbank mit NDF-Dateien weiter vergrößern. Die LDF-Dateien speichern die Protokollinformationen, die zum Wiederherstellen der Datenbank verwendet werden. Für jede Datenbank muss mindestens eine Protokolldatei vorhanden sein.

Interne Fragmentierung verhindern

Indizes stellen in SQL-Server-Datenbanken ein wichtiges Werkzeug zur Beschleunigung von Anfragen dar. Allerdings können sie innerhalb der Datenbank-Datei eine Fragmentierung verursachen, sprich bei einer Verteilung von Daten auf Speicherblöcke werden diese nur zum Teil gefüllt. 

Wenn Index-Dateien voll sind, spaltet sie der SQL Server, indem er am Ende der Datenbankdatei neue Seiten erstellt, um darin Daten speichern zu können. Da dieser Vorgang in der Datenbankdatei Platz verschwenden kann, sollten sie die Indizes in regelmäßigen Abständen aktualisieren beziehungsweise neu aufbauen. 

Beim Umbau wird der alte Index im Wesentlichen gelöscht und ein neuer Index wird erzeugt. Der Admin kann nun den Speicherplatz für neue Daten so konfigurieren, dass es auf absehbare Zeit nicht notwendig ist, die Seiten erneut aufzuteilen.

Zudem sollten Sie die interne Datenbankstruktur in regelmäßigen Abständen defragmentieren. Dies läuft ähnlich ab wie die Defragmentierung einer Festplatte: Alle Seiten mit bestimmten Datenbankelementen wie zum Beispiel Indizes oder Datenseiten werden so reorganisiert, dass sie zusammenhängende Speicherblöcke besetzen. 

Da sich die Daten auch über mehrere Seiten neu organisieren lassen, werden insgesamt weniger Seiten benötigt. Das spart Speicherplatz und schafft innerhalb der Datenbankdateien größere Kapazitäten für Wachstum.

Den richtigen Zeitpunkt für das Verkleinern der Datenbank kennen

Es gibt zwei Ansätze für das Verkleinern einer Datenbank. Beim ersten Ansatz reduziert SQL Server die Größe der Datenbankdateien und führt ungenutzten Speicherplatz an das Betriebssystem zurück. Mit dem Verkleinern von Datendateien wird Platz gewonnen, indem Datenseiten vom Ende der Datei an nicht belegten Platz weiter am Dateianfang verschoben werden. Meist erfolgt dies über Defragmentierung.

Mehr zum Thema SQL Server:

Tabellen mit dem SQL Server Management Studio Table Designer erzeugen.

Sechs tägliche Aufgaben für jeden SQL Server Datenbankadministrator (DBA).

Fünf Alternativen zu Microsoft Azure SQL Server.

Hilfreiche Tools von Drittanbietern für Microsoft SQL Server.

SQL Server Probleme und Engpässe beheben: Die besten Drittanbieter-Tools.

Wurde dadurch am Ende der Datei ausreichend Platz geschaffen, lässt sich die Zuordnung der Datenseiten am Ende der Datei aufheben und die Datenseiten können ins Dateisystem zurückgegeben werden. Ein Datenbankadministrator wird diesen Vorgang wohl nur selten starten; typischerweise ist das Verkleinern einer Datenbank möglich, auf die nur wenige neue Daten geschrieben werden. Sie belegt dadurch unnötig Speicherplatz, der an anderer Stelle dringend gebraucht wird.

Auch der Neuaufbau von Indizes verkleinert die Datenbank. Wenn Sie einen hohen „Füllfaktor“ konfigurieren, werden Indexseiten so überschrieben, dass sie weniger freien Speicherplatz für neue Daten vorhalten, das heißt, der Index selbst erstreckt sich über weniger Seiten. 

Dadurch verbessert sich die Leistung beim Auslesen der Daten. Zudem wird in der Datenbankstruktur Platz freigeschaufelt. Für Datenbanken, die ständig mit neuen Daten bespielt wird, ist dieses Verfahren nicht anzuraten. Der Grund: Diese Seiten müssen eher früher als später aufgeteilt werden. Die Spaltung führt zu Fragmentierung und senkt die Lese- und Schreibleistung.

Es ist verlockend, die SQL Server Datenbanken laufen zu lassen, ohne sich mit Fragen der Kapazität zu befassen – aber nur solange, bis die physischen Festplatten des Servers voll sind, denn dann erfordert diese Frage erhöhte Aufmerksamkeit. Wenn die Admins aber die Kapazität innerhalb der Datenbankdateien aktiv verwalten, können sie die Leistung verbessern und die Datenbank effizienter nutzen.

Über den Autor:
Don Jones ist Mitbegründer der Firma Concentrated Technology, Autor von mehr als 30 IT-Büchern und Referent auf zahlreichen weltweiten Konferenzen. Sie können Jones über seine Firmen-Website kontaktieren.

Folgen Sie SearchEnterpriseSoftware.de auch auf Twitter, Google+ und Facebook!

Artikel wurde zuletzt im April 2015 aktualisiert

Pro+

Premium-Inhalte

Weitere Pro+ Premium-Inhalte und andere Mitglieder-Angebote, finden Sie hier.

Erfahren Sie mehr über Datenbank-Management-Systeme (DBMS)

Diskussion starten

Schicken Sie mir eine Nachricht bei Kommentaren anderer Mitglieder.

Mit dem Absenden dieser Daten erklären Sie sich bereit, E-Mails von TechTarget und seinen Partnern zu erhalten. Wenn Ihr Wohnsitz außerhalb der Vereinigten Staaten ist, geben Sie uns hiermit Ihre Erlaubnis, Ihre persönlichen Daten zu übertragen und in den Vereinigten Staaten zu verarbeiten. Datenschutz

Bitte erstellen Sie einen Usernamen, um einen Kommentar abzugeben.

- GOOGLE-ANZEIGEN

SearchSecurity.de

SearchStorage.de

SearchNetworking.de

SearchDataCenter.de

Close