Datenbankmanagement
Während der alltäglichen Arbeiten verändern sich die Daten ständig: es können stetig neue hinzukommen, bestehende Daten sich ändern (z.B. wachsen und mehr Speicherplatz in Anspruch nehmen oder den Ablageort wechseln) oder gelöscht werden. Die Datenspeicherung in der Datenbank ist anspruchsvoll und muss stets gepflegt werden.
Trotz des sachgemäßen Betriebs der Datenbank lassen sich einige Probleme mit der Zeit nicht ausschließen, wodurch beispielsweise Indizes fragmentieren, die Log-Dateien viel Speicher in Anspruch nehmen oder die Datenbank selbst einfach viel zu groß wird. Die Konsequenz ist oftmals eine nachlassende Performance, längere Ladezeiten beim Abruf der Daten oder ein nicht vorhersehbares Verhalten der Datenbank. Kurz gesagt: Das Datenbanksystem funktioniert nicht mehr so, wie sie es eigentlich sollte oder lässt sich erst gar nicht mehr starten, bis wieder Speicherplatz geschaffen wird.
Um dem entgegen zu wirken, sollten Sie sich immer wieder die Zeit nehmen und Ihr bestehendes Datenbanksystem warten. Nachfolgend finden Sie einige Empfehlungen und Hinweise, wie Sie Ihre ACMP Datenbank pflegen können und welche sinnigen Gegenmaßnahmen Sie ergreifen können.
Gegenmaßnahmen: Datenbank und Dateien verkleinern
Das Verkleinern (engl. Shrinken) einer Datenbank wird dann in der Regel gemacht, wenn es auf der Festplatte, wo die Datendateien liegen, keinen oder nur noch wenig Platz gibt. Es können nur die Daten um freie Bereiche gekürzt werden. Das heißt, dass Bereiche, die zum Teil belegt sind, nicht komplett freigegeben werden können (das theoretische Minimum liegt beim Platzbedarf der Daten).
Das Verkleinern dient demnach dazu, um auf der Datenbank wieder Platz zu schaffen. Es können entweder die Datenbank oder die darin enthaltenen Dateien verkleinert werden.
Datenbank verkleinern
Die Größe einer Datenbank wird durch Verkleinern der Datenbankdateien reduziert. Das gilt für die Bereiche in den Datenbankdateien, die komplett frei sind (siehe auch Defragmentierung der Indexe). Möchten Sie nur einzelne Datenbankdateien verkleinern, nutzen Sie die Option Dateien verkleinern.
Nachdem Sie alle relevanten Anwendungen, Prozesse und Sessions geschlossen haben, rufen Sie im Microsoft SQL Server Management Studio die Datenbank in der linken Navigation auf, die Sie verkleinern möchten. Öffnen Sie mit einem Rechtsklick das Kontextmenü und klicken Sie dort auf Tasks > Verkleinern > Datenbank.
Aus dem sich öffnenden Fenster können Sie die aktuellen Informationen entnehmen (beispielsweise die ausgewählte Datenbank und die Größe). In dem Abschnitt Datenbankgröße sehen Sie den aktuell zugeordneten und den frei verfügbaren Speicherplatz. Setzen Sie einen Haken in der Checkbox unter Verkleinerungsaktion, sollten Sie die Dateien vor dem Freigeben von nicht belegtem Speicherplatz neu organisieren wollen. Ergänzen Sie dieser Aktion noch eine Prozentangabe, wie groß der verfügbare Speicherplatz der Dateien maximal nach dem Verkleinern sein darf.
Klicken Sie auf OK und das Verkleinern der Datenbank wird ausgeführt.
Dateien verkleinern
Möchten Sie nicht direkt eine ganze Datenbank verkleinern, sondern nur ausgewählte Datenbankdateien und/oder –dateigruppen, können Sie eine solche Änderung separat vornehmen. Das kann dann sinnvoll sein, wenn Sie beispielsweise gezielt ausmachen können, welche Ihrer Datenbankdateien sehr groß sind und Sie diese verkleinern wollen. Hierbei wird die Größe der Datenbank durch das Verkleinern einzelner Dateien oder Dateigruppen reduziert.
Öffnen Sie im Microsoft SQL Server Management Studio die Datenbank, in der Sie Dateien verkleinern wollen. Öffnen Sie mit einem Rechtsklick das Kontextmenü und klicken Sie dort auf Tasks > Verkleinern > Dateien.
In der Zeile Datenbank können Sie überprüfen, ob Sie die richtige Datenbank ausgewählt haben. In diesem Fall sollte bei Ihnen dort der Name der ACMP Datenbank stehen. Im oben abgebildeten Bild heißt diese „ACMP“. Unter der Rubrik Datenbankdateien und –dateigruppen können Sie nun den Typen auswählen.
Wählen Sie den Dateitypen und die weiteren Konfigurationen aus. Kontrollieren Sie den aktuell zugeordneten und frei verfügbaren Speicherplatz, um eine mögliche Änderung zu überprüfen.
Wählen Sie unter der Verkleinerungsaktion aus, wie Sie den Speicherplatz verwalten wollen:
Option | Erklärung |
Nicht verwendeten Speicherplatz freigeben | Mit dieser Aktion geben Sie den nicht verwendeten Speicherplatz frei. |
Seiten vor dem Freigeben von nicht verwendetem Speicherplatz neu organisieren | Hier können Sie die Seiten vor dem Freigeben von nicht verwendetem Speicherplatz neu organisieren und die Datei durch eine Eingabe verkleinern. Der hier einzutragende Wert muss sich an dem Minimalwert orientieren und kann nicht unterschritten werden. |
Option | Erklärung |
Datei durch Migrieren ihrer Daten zu anderen Dateien in der gleichen Dateigruppe leeren | Wählen Sie diese Option aus, werden alle Daten aus der angegebenen Datei in andere Dateien der gleichen Dateigruppe verschoben. Die leere Datei kann im Anschluss gelöscht werden. |
Klicken Sie auf OK, damit die Datei verkleinert wird.
Indizes Defragmentierung
Unter einer Fragmentierung versteht man eine verstreute Speicherung von logisch zusammengehörigen Datenblöcken eines Dateisystems auf einem Datenträger. Die Fragmentierung der Indexe wird durch das ständige Verändern der Daten (Einfügen/Ändern/Löschen) verursacht, wodurch Lücken in der Datenbankdatei entstehen können. Ein Index sortiert dabei die Daten logisch, weshalb die Ordnung auch bei der Fragmentierung erhalten bleibt. Mit der Zeit kann es aber zu einer Degenerierung der Ordnung kommen, weshalb eine Datenbank mehr Speicher verbraucht und der Zugriff langsamer wird. Um dieses Problem effektiv zu lösen, kann ein regelmäßig ausgeführtes Wartungsskript Abhilfe schaffen.
Um dies auszuführen, müssen Sie zunächst das Microsoft SQL Server Management Studio öffnen und eine Verbindung mit dem Server aufbauen, indem Sie sich mit Ihren Anmeldedaten einloggen.
Klicken Sie auf Verbinden und das Management Studio wird im Hintergrund geöffnet. Navigieren Sie zum Objekt-Explorer auf der linken Seite der Menüleiste und öffnen Sie dort die ACMP Datenbank.
Führen Sie einen Rechtsklick auf der ACMP Datenbank aus und klicken Sie im sich öffnenden Kontextmenü auf Neue Abfrage.
In der Hauptansicht des Management Studios öffnet sich ein Editor für die neue Abfrage. Fügen Sie folgendes SQL-Skript ein:
DECLARE @database NVARCHAR(100)= DB_NAME()
EXEC ap_index_defrag 0,0
DBCC SHRINKDATABASE (@database)
EXEC ap_index_defrag 0,0
Klicken Sie anschließend auf Ausführen. Im unteren Bereich des Editors öffnen sich zwei Tabs (Ergebnisse und Meldungen), die nach jedem Durchlauf (egal ob erfolgreich oder nicht) Meldungen geben. Schließen Sie nach beendeter Arbeit das Microsoft SQL Server Management Studio.
Das Statement erstellt die Indizes der ACMP Datenbank neu und führt ebenfalls eine Verkleinerung der Datenbank durch.
ACMP Datenbank ist aufgrund der Logdateien zu groß
Die ACMP Datenbank kann auch aufgrund der Logdateien (engl. Logfiles) schnell volllaufen und zu groß werden.
Die Logdateien sind dabei für zwei Dinge wichtig:
Zum einen stellen sie sicher, dass die Daten bei Ihren Änderungen konsistent bleiben. Das heißt, dass die Änderungen entweder komplett durchgeführt werden oder gar nicht (beispielsweise im Fehlerfall oder wenn der Strom ausfällt). Letzteres bedeutet, dass die vorläufigen Änderungen bis zum Fehlerfall wieder zurückgenommen werden, wobei im Logfile die relevanten Informationen, was im Fehlerfall zurückgenommen wurde, stehen. Das Zurücknehmen (engl. Rollback) passiert transparent im Hintergrund. Sofern das Logfile vollläuft, startet der SQL Server nicht mehr.
Zum anderen werden Logdateien auch für ein Vorwärtsrollen (engl. Rollforward) genutzt, also die umgekehrte Funktion des Zurücknehmens. Vorwärtsrollen wird dann gemacht, wenn Sie ein Vollbackup der Datenbank einspielen und dann noch die letzten Änderungen seit dem Erstellen des Backups auch noch wieder zurückspielen wollen. Dieses geht aber nur im Wiederherstellungsmodell Vollständig.
Die Logfiles befinden sich unter MSSQL\Data. Jedoch sollten die Datenbank und die Logdatei jeweils auf einer eigenen Festplatte liegen, wodurch sie nicht nur räumlich voneinander getrennt sind, sondern auch eine bessere Performance erbringen können. Die Dateien werden als MDF oder LDF-Dateien gespeichert, wobei die MDF-Dateien die eigentlichen Daten enthalten und dadurch häufig größer sind als die LDF-Datei. Die LDF-Datei ist eine unterstützende Datei, die Informationen zu den Transaktionsprotokollen sichert. Überprüfen Sie bei sich sowohl den Speicherort als auch die Dateigrößen.
Sollten Sie bei sich keine oder unvollständige Einstellungen zu den Logfiles gesetzt haben, können Sie diese in den Eigenschaften der ACMP Datenbank ändern. Beenden Sie dafür zuerst den ACMP Serverdienst.
Öffnen Sie danach das Microsoft SQL Server Management Studio, melden Sie sich unter den Anmeldeinformationen an und wählen Sie anschließend die ACMP Datenbank in der linken Navigation aus. Führen Sie dort einen Rechtsklick auf der ACMP Datenbank aus und klicken Sie im sich öffnenden Kontextmenü auf Eigenschaften. Es öffnen sich die Datenbankeigenschaften zu der Datenbank. Wählen Sie den Menüpunkt Optionen aus. In der Ansicht befindet sich an zweiter Stelle der Eintrag Wiederherstellungsmodell (engl. Recovery Model). Das Wiederherstellungsmodell ist eine Option, mit der Sie festlegen können, wie eine Log-Datei behandelt wird:
Wiederherstellungsmodus | Recovery Model | Erklärung |
Vollständig | Full | Sämtliche Änderungen der Datenbank werden protokolliert. Dabei werden keine zeitlichen oder größenmäßigen Einschränkungen gemacht. Der Speicherbedarf und der Backupaufwand ist deutlich erhöht. |
Massenprotokolliert | Bulk logged | Es wird wie beim vollständigen Wiederherstellungsmodell eine Protokollsicherung angefertigt, wobei das Modell die Speicherauslastung leicht reduziert und die Datensicherung kleiner hält. Es kann beispielsweise bei einem Import mit einer hohen Anzahl an Datensätzen gebraucht werden. |
Einfach | Simple | Der Protokollspeicher wird automatisch wieder freigegeben, denn über dieses Modell kann die Datei nur bis zu einer bestimmten Größe beschrieben werden. Die ältesten Daten werden dabei gelöscht, sobald die Größe erreicht ist. Häufig wird dieses Modell für die ACMP Datenbank verwendet. |
Sollte bei Ihnen im Dropdownfeld „Vollständig“ oder „Massenprotokolliert“ gesetzt sein, wechseln Sie den Eintrag auf „Einfach“.
Klicken Sie anschließend auf OK und das Fenster schließt sich.
Verkleinern Sie im Anschluss Ihre Datenbank. Befolgen Sie dafür die Schritte aus dem Abschnitt Datenbank verkleinern.