[IT168 Server Academy] Transaktionsprotokolle sind ein sehr wichtiger, aber oft ignorierter Teil der Datenbankstruktur. Da es nicht so aktiv ist wie das Schema in der Datenbank, achten nur wenige Leute auf das Transaktionsprotokoll.
Das Transaktionsprotokoll ist eine Aufzeichnung von Datenbankänderungen. Es kann jeden Vorgang in der Datenbank aufzeichnen und die Aufzeichnungsergebnisse in einer separaten Datei speichern. Für jeden Transaktionsprozess verfügt das Transaktionsprotokoll über sehr umfassende Aufzeichnungen, und die Datendateien können auf der Grundlage dieser Aufzeichnungen in den Zustand vor der Transaktion zurückversetzt werden. Von Beginn der Transaktionsaktion an befindet sich das Transaktionsprotokoll im Aufzeichnungsstatus. Alle Vorgänge in der Datenbank während der Transaktion liegen im Aufzeichnungsbereich. Die Aufzeichnung wird erst abgeschlossen, wenn der Benutzer auf „Senden“ oder „Zurück“ klickt. Jede Datenbank verfügt über mindestens ein Transaktionsprotokoll und eine Datendatei.
Aus Leistungsgründen speichert SQL Server Benutzeränderungen im Cache. Diese Änderungen werden sofort in das Transaktionsprotokoll geschrieben, nicht jedoch in die Datendatei. Das Transaktionsprotokoll verwendet einen Markierungspunkt, um zu bestimmen, ob eine Transaktion Daten aus dem Cache in die Datendatei geschrieben hat. Beim Neustart von SQL Server wird der letzte Markierungspunkt im Protokoll überprüft und die Transaktionsdatensätze nach diesem Markierungspunkt gelöscht, da diese Transaktionsdatensätze die Daten im Cache nicht tatsächlich in die Datendatei schreiben. Dadurch wird verhindert, dass diese unterbrochenen Transaktionen die Datendateien ändern.
Pflegen Sie das Transaktionsprotokoll.
Da viele Leute das Transaktionsprotokoll oft vergessen, kann es auch zu Problemen im System kommen. Während das System weiterläuft, werden immer mehr Protokolldatensätze aufgezeichnet und auch die Größe der Protokolldateien wird immer größer, was schließlich dazu führt, dass nicht mehr genügend Speicherplatz verfügbar ist. Sofern die Protokolle bei der täglichen Arbeit nicht häufig bereinigt werden, belegen die Protokolldateien letztendlich den gesamten verfügbaren Speicherplatz in der Partition. Die Standardkonfiguration des Protokolls ist unbegrenzte Kapazität. Wenn Sie in dieser Konfiguration arbeiten, wird es weiter erweitert und schließlich den gesamten verfügbaren Speicherplatz belegen. Beide Situationen können dazu führen, dass die Datenbank nicht mehr funktioniert.
Eine routinemäßige Sicherung von Transaktionsprotokollen kann wirksam verhindern, dass Protokolldateien übermäßig viel Speicherplatz beanspruchen. Beim Sicherungsvorgang werden Teile des Protokolls abgeschnitten, die nicht mehr benötigt werden. Die Kürzungsmethode besteht darin, zunächst die alten Datensätze als inaktiv zu markieren und dann die neuen Protokolle am Speicherort der alten Protokolle zu überschreiben, wodurch verhindert wird, dass das Transaktionsprotokoll größer wird. Wenn regelmäßige Sicherungen des Protokolls nicht durchgeführt werden können, stellen Sie die Datenbank am besten auf „einfaches Wiederherstellungsmodell“ ein. In diesem Modus erzwingt das System, dass das Transaktionsprotokoll jedes Mal automatisch gekürzt wird, wenn ein Markierungspunkt aufgezeichnet wird, wodurch das alte Protokoll durch ein neues Protokoll überschrieben wird.
Der Kürzungsprozess erfolgt beim Sichern oder Markieren alter Punkte als inaktiv, wodurch alte Transaktionsdatensätze überschrieben werden können, der tatsächlich vom Transaktionsprotokoll belegte Speicherplatz jedoch nicht verringert wird. Auch wenn das Protokoll nicht mehr verwendet wird, nimmt es dennoch einen gewissen Platz ein. Daher muss während der Wartung auch das Transaktionsprotokoll komprimiert werden. Transaktionsprotokolle werden durch das Löschen inaktiver Datensätze komprimiert, wodurch der von den Protokolldateien belegte physische Festplattenspeicher reduziert wird.
Die Transaktionsprotokolldatei der aktuellen Datenbank kann mithilfe der DBCC SHRINKDATABASE-Anweisung komprimiert werden. Darüber hinaus kann der automatische Komprimierungsvorgang in der Datenbank aktiviert werden. Beim Komprimieren eines Protokolls werden zunächst alte Datensätze als inaktiv markiert und anschließend werden als inaktiv markierte Datensätze vollständig gelöscht. Abhängig von der verwendeten Komprimierungsmethode werden möglicherweise nicht sofort Ergebnisse angezeigt. Idealerweise sollten Komprimierungsarbeiten in Zeiten durchgeführt werden, in denen das System nicht sehr ausgelastet ist, da sie sonst die Datenbankleistung beeinträchtigen können.
Durch die Wiederherstellung der Datenbanktransaktionsdatensatzsicherung
kann die Datenbank in einem bestimmten Zustand wiederhergestellt werden. Die Transaktionsdatensatzsicherung allein reicht jedoch nicht aus, um die Aufgabe der Datenbankwiederherstellung abzuschließen, und die gesicherten Datendateien müssen ebenfalls an der Wiederherstellungsarbeit beteiligt sein. Beim Wiederherstellen einer Datenbank besteht der erste Schritt darin, die Datendateien wiederherzustellen. Setzen Sie die gesamte Datendatei nicht auf den abgeschlossenen Status, bis die gesamte Datendatei wiederhergestellt wurde, da sonst das Transaktionsprotokoll nicht wiederhergestellt wird. Wenn die Wiederherstellung der Datendatei abgeschlossen ist, stellt das System die Datenbank durch die Sicherung des Transaktionsprotokolls in dem vom Benutzer gewünschten Zustand wieder her. Wenn nach der letzten Sicherung der Datenbank Sicherungen mehrerer Protokolldateien vorhanden sind, werden diese vom Sicherungsprogramm der Reihe nach entsprechend dem Zeitpunkt ihrer Erstellung wiederhergestellt.
Ein anderer Prozess namens Protokollversand kann stärkere Datenbanksicherungsfunktionen bieten. Wenn der Protokollversand konfiguriert ist, kann die gesamte Datenbank auf einen anderen Server kopiert werden. In diesem Fall werden Transaktionsprotokolle auch regelmäßig zur Datenwiederherstellung an den Backup-Server gesendet. Dadurch bleibt der Server in einem Hot-Backup-Zustand und wird bei Datenänderungen aktualisiert. Der andere Server wird als Überwachungsserver bezeichnet und kann zur Überwachung der in bestimmten Intervallen gesendeten Versandsignale verwendet werden. Wenn innerhalb der angegebenen Zeit kein Signal empfangen wird, protokolliert der Überwachungsserver dieses Ereignis im Ereignisprotokoll. Durch diesen Mechanismus wird der Protokollversand häufig in Notfallwiederherstellungsplänen eingesetzt.
Das Transaktionsprotokollzur Leistungsoptimierung
spielt eine wichtige Rolle in der Datenbank und hat auch einen gewissen Einfluss auf die Gesamtleistung des Systems. Durch mehrere Optionen können wir die Leistung des Transaktionsprotokolls optimieren. Da es sich beim Transaktionsprotokoll um einen kontinuierlichen Schreibvorgang auf die Festplatte handelt, erfolgt während dieses Vorgangs kein Lesevorgang. Daher spielt das Platzieren der Protokolldatei auf einer unabhängigen Festplatte eine gewisse Rolle bei der Leistungsoptimierung.
Eine weitere Optimierungsmaßnahme betrifft die Größe der Protokolldatei. Wir können die Größe der Protokolldatei so einstellen, dass sie einige Prozent des Festplattenspeichers nicht überschreitet, oder ihre Größe bestimmen. Wenn er zu hoch eingestellt ist, wird Speicherplatz verschwendet, und wenn er zu klein eingestellt ist, wird die Protokolldatei gezwungen, ständig zu versuchen, sich zu erweitern, was zu einer Verringerung der Datenbankleistung führt.
Transaktionsprotokolldatei Die Transaktionsprotokolldatei ist eine Datei zum Aufzeichnen von Datenbankaktualisierungen mit der Erweiterung ldf.
Wenn in SQL Server 7.0 und SQL Server 2000 die Funktion zum automatischen Vergrößern aktiviert ist, wird die Transaktionsprotokolldatei automatisch erweitert.
Im Allgemeinen ist die Größe des Transaktionsprotokolls stabil, wenn es die maximale Anzahl von Transaktionen aufnehmen kann, die zwischen der Transaktionsprotokollkürzung, die durch einen Prüfpunkt oder eine Transaktionsprotokollsicherung ausgelöst wird, stattfinden.
In einigen Fällen kann das Transaktionsprotokoll jedoch so groß werden, dass nicht mehr genügend Speicherplatz vorhanden ist oder es voll ist. Wenn die Transaktionsprotokolldatei den verfügbaren Speicherplatz füllt und nicht mehr erweitert werden kann, erhalten Sie normalerweise eine Fehlermeldung wie die folgende:
Fehler:9002, Schweregrad:17, Status:2
Die Protokolldatei für die Datenbank „%.*ls“ ist voll.
Zusätzlich zu dieser Fehlermeldung markiert SQL Server die Datenbank möglicherweise als VERDÄCHTIG, da nicht genügend Speicherplatz für die Transaktionsprotokollerweiterung vorhanden ist. Weitere Informationen zur Wiederherstellung nach dieser Situation finden Sie im Thema „Wenig Speicherplatz“ in der SQL Server-Onlinehilfe.
Darüber hinaus kann die Erweiterung des Transaktionsprotokolls zu folgenden Situationen führen:
· Sehr große Transaktionsprotokolldateien.
· Die Transaktion schlägt möglicherweise fehl und beginnt möglicherweise mit einem Rollback.
· Der Abschluss von Transaktionen kann lange dauern.
· Es können Leistungsprobleme auftreten.
· Es kann zu Verstopfungen kommen.
Ursache Eine Erweiterung des Transaktionsprotokolls kann aus folgenden Gründen oder Situationen auftreten:
· Nicht festgeschriebene Transaktionen · Sehr große Transaktionen · Operationen: DBCC DBREINDEX und CREATE INDEX
· Bei der Wiederherstellung aus einer Transaktionsprotokollsicherung · Die Clientanwendung verarbeitet nicht alle Ergebnisse · Die Abfrage läuft ab, bevor die Erweiterung des Transaktionsprotokolls abgeschlossen ist und Sie erhalten die falsche Fehlermeldung „Protokoll voll“ · Nicht replizierte Transaktionsauflösung, verursacht durch die Protokolldatei full Wenn die SQL-Datenbank nicht in die Datei schreiben kann, stehen zwei Methoden zur Verfügung:
Eine Möglichkeit: Löschen Sie das Protokoll.
1. Öffnen Sie den Abfrageanalysator und geben Sie den Befehl DUMP TRANSACTION Datenbankname WITH NO_LOG ein
2. Öffnen Sie den Enterprise Manager erneut – klicken Sie mit der rechten Maustaste auf die Datenbank, die Sie komprimieren möchten – Alle Aufgaben – Verkleinern Sie die Datenbank – Verkleinern Sie Dateien – Wählen Sie die Protokolldatei aus – Wählen Sie im Verkleinerungsmodus „Auf XXM verkleinern“ und a Hier wird die Erlaubnis zum Schrumpfen erteilt. Um die Mindestanzahl von M zu erreichen, geben Sie diese Zahl direkt ein und bestätigen Sie.
Die andere Methode birgt gewisse Risiken, da die Protokolldatei von SQL SERVER nicht sofort in die Hauptdatenbankdatei geschrieben wird. Bei unsachgemäßer Handhabung kommt es zu Datenverlust.
1: LOG löschen
Datenbank trennen Enterprise Manager -> Server -> Datenbank -> Rechtsklick -> Datenbank trennen 2: LOG-Datei löschen Datenbank anhängen Enterprise Manager -> Server -> Datenbank -> Rechtsklick -> Datenbank anhängen Diese Methode generiert ein neues LOG, die Größe ist nur mehr als 500K.
Hinweis: Es wird empfohlen, die erste Methode zu verwenden.
Wenn Sie in Zukunft nicht möchten, dass es größer wird.
Wird unter SQL2000 verwendet:
Klicken Sie mit der rechten Maustaste auf die Datenbank->Eigenschaften->Optionen->Failure Recovery-Model-Select-Simple Model.
Oder verwenden Sie eine SQL-Anweisung:
Datenbank ändern, Datenbanknamen festlegen, Wiederherstellung einfach
Darüber hinaus verfügen die Datenbankeigenschaften, wie in der Abbildung oben dargestellt, über zwei Optionen, die sich auf das Wachstum des Transaktionsprotokolls beziehen:
Protokoll am Prüfpunkt kürzen
(Diese Option wird in SQL7.0 verwendet. In SQL 2000 wird das Fehlerwiederherstellungsmodell als einfaches Modell ausgewählt.)
Wenn der CHECKPOINT-Befehl ausgeführt wird, wird der Inhalt der Transaktionsprotokolldatei gelöscht, wenn sie 70 % ihrer Größe überschreitet. Setzen Sie diese Option beim Entwickeln der Datenbank immer auf True.
Automatisch verkleinern
Überprüfen Sie die Datenbank regelmäßig, wenn der ungenutzte Speicherplatz der Datenbankdatei oder Protokolldatei 25 % ihrer Größe überschreitet. Das System reduziert die Datei automatisch, um den ungenutzten Speicherplatz auf 25 % zu bringen Beim Erstellen ist dies nicht der Fall. Die reduzierte Datei muss außerdem größer oder gleich ihrer Originalgröße sein. Das Reduzieren der Transaktionsprotokolldatei ist nur möglich, wenn sie gesichert wird oder wenn die Option „Protokoll am Prüfpunkt abschneiden“ auf „True“ gesetzt ist.
Hinweis: Im Allgemeinen wurden die Standardeigenschaften der von Li Cheng erstellten Datenbank festgelegt, aber im Falle unerwarteter Umstände werden die Datenbankeigenschaften geändert. Bitte löschen Sie das Protokoll und überprüfen Sie dann die oben genannten Eigenschaften der Datenbank, um zu verhindern, dass das Transaktionsprotokoll angezeigt wird wieder auffüllen.