Datenbankmanagement

Zuletzt geändert von Sabrina V. am 2024/10/14 08:40

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.

Hinweis  Hinweis: 

Nachfolgende Beispiele basieren auf den Arbeiten mit dem Microsoft SQL Server Management Studio. Wir empfehlen Ihnen die Installation der Anwendung mit der Sie sich auf einen Server verbinden können, um so die Datenbankpflege zu betreiben. Das Studio muss nicht auf dem Server installiert werden, auf der die SQL Server Instanz läuft!

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.

Warning  Achtung: 

Führen Sie vorher unbedingt eine Datenbank Sicherung (Backup) durch, bevor Sie eine Verkleinerung der Datenbank oder einzelner Dateien vornehmen. Sollten Sie bisher kein Backup gemacht haben, müssen Sie das dringend tun. Sie alleine sind dafür verantwortlich, dass die Datenbank im Fall eines Fehlers wiederhergestellt werden kann. Lesen Sie hier nach, wie Sie ein ACMP Backup erstellen und wie Sie es wieder einspielen können.

Datenbank verkleinern

Hinweis  Hinweis: 

Vergewissern Sie sich, dass Anwendungen wie ACMP oder andere nicht auf die Datenbank zugreifen, wenn Sie eine Datenbank verkleinern wollen. Das Shrinken kann sonst nicht optimal, nur sehr langsam oder gar nicht durchgeführt werden. Sorgen Sie also dafür, dass entsprechende Dienste nicht auf die ACMP Datenbank zugreifen. Prüfen Sie mögliche Prozesse über den Activity Monitor und beenden Sie diese. 

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.

66_Datenbank_Datenbank verkleinern_690.png

Datenbank verkleinern

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.

Hinweis  Hinweis: 

Diese Option kann sich negativ auf die Leistung auswirken.

Hinweis  Hinweis: 

Empfehlung: Machen Sie das Datenbankfile nicht zu klein und planen Sie einen möglichen Puffer für alle weiteren Aktionen ein. Damit der Arbeitsprozess nicht gestört wird, sobald die Datenbank wieder online gestellt wird, sollten Sie immer etwas an Reserve einplanen (z.B. 200 MB). Es gilt: Umso mehr Platz freigegeben werden muss, desto länger dauert eine Aktion!

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.

Hinweis  Hinweis: 

Beachten Sie, dass bei diesem Verfahren kein zugeordneter Datenbankspeicher freigegeben wird. Hierfür müssen Sie die sämtlichen Datenbankdateien einbeziehen, was über die Option Datenbank verkleinern  möglich ist.

Ö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.

66_Datenbank_Datei verkleinern_690.png

Datei verkleinern

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.

Hinweis  Hinweis: 

Je nach gewähltem Dateityp kann die Benutzeroberfläche leicht variieren, da nicht alle Felder immer verfügbar sind.

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:

OptionErklärung
Nicht verwendeten Speicherplatz freigebenMit dieser Aktion geben Sie den nicht verwendeten Speicherplatz frei.
Seiten vor dem Freigeben von nicht verwendetem Speicherplatz neu organisierenHier 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.

Hinweis  Hinweis: 

MSSQL verwaltet eine Datenbankdatei in Extents. Extents sind Speicherblöcke, bestehend aus acht Seiten. Eine Seite bzw. eine Page ist ein 8KB umfassender Bereich. Das ist die kleinste Speichereinheit, die der SQL Server abspeichern kann. Ein Extent besteht demnach also aus 64KB.

OptionErklärung
Datei durch Migrieren ihrer Daten zu anderen Dateien in der gleichen Dateigruppe leerenWä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.

Warning  Achtung: 

Stellen Sie sicher, dass Ihr Benutzerkonto über die entsprechenden Rechte verfügt, um eine Defragmentierung durchzuführen.

 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.

Hinweis  Hinweis: 

Achten Sie darauf, dass Sie die korrekte Datenbank aus dem Dropdown-Feld auswählen, um nicht an einer falschen Datenbank Änderungen vorzunehmen.

 Führen Sie einen Rechtsklick auf der ACMP Datenbank aus und klicken Sie im sich öffnenden Kontextmenü auf Neue Abfrage.

66_Datenbank_Aufruf einer neuen Abfrage_478.png

Neue Abfrage einfügen

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

66_Datenbank_Ausführung einer neuen Abfrage_837.png

SQL-Skript in der Abfrage ausführen

Hinweis  Hinweis: 

Achten Sie darauf, dass Sie den richtigen Eintrag der verfügbaren Datenbanken (hier: ACMP) ausgewählt haben und somit die Abfrage in der richtigen Datenbank ausführen.

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.

Warning  Achtung: 

Führen Sie regelmäßig (z.B. einmal im Monat) das oben genannte SQL-Skript in Kombination mit einem Backup aus, um möglichen Datenbankproblemen vorzubeugen.

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:

WiederherstellungsmodusRecovery ModelErklärung
VollständigFullSä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.
MassenprotokolliertBulk loggedEs 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.
EinfachSimpleDer 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“.

66_Datenbank_Datenbankeigenschaften_698.png

Wiederherstellungsmodell anpassen

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.  

© Aagon GmbH 2024
Besuchen Sie unsere neue Aagon-Community