Matching und Mischen
Das Sichern des Transaktionsprotokolls ist nicht dasselbe wie das Abschneiden der Transaktionsprotokolldatei, und das Abschneiden der Transaktionsprotokolldatei ist nicht dasselbe wie das Verkleinern der Transaktionsprotokolldatei. Oh ja, und das Sichern der Transaktionsprotokolldatei muss keine Kürzung auslösen. Abhängig von der aktuellen Auslastung kann das Datenbankmodul entscheiden, einen Prüfpunkt festzulegen, aber mit dem Abschneiden etwas zu warten.
Erklären
In der Transaktionsprotokolldatei speichert das Datenbankmodul Änderungen an den Daten in einer Datenbank, unabhängig davon, ob sich die Datenbank im SIMPLE-Wiederherstellungsmodell oder im FULL-Wiederherstellungsmodell befindet. (Wichtig)
Jetzt ist die Transaktionsprotokolldatei der Datenbank nicht nur ein fortlaufender Speichercontainer, sondern eine Sammlung von virtuellen Protokolldateien (VLFs), die in einer sequentiellen Reihenfolge in der Transaktionsprotokolldatei (TLog) erstellt werden. Die Größe der VLFs hängt davon ab, welche Version von SQL Server Sie gerade verwenden und welche Anfangsgröße Sie beim Erstellen der TLog-Datei ausgewählt haben und welche Größe Sie (falls vorhanden) für die Einstellung für das automatische Wachstum von ausgewählt haben TLog-Datei.
Referenzen:
- Wichtige Änderung des VLF-Erstellungsalgorithmus in SQL Server 2014 (SQLSkills.com)
- Anfängliche VLF-Sequenznummern und Standardgröße der Protokolldatei (SQLSkills.com)
- Innerhalb der Storage Engine: Weitere
Informationen zur Zirkularität des Protokolls (SQLSkills). com)
... und vielleicht in umgekehrter Reihenfolge
Wenn Daten in der Datenbank geändert werden, schreibt das Datenbankmodul diese Änderungen in das TLog der entsprechenden Datenbank, um die Transaktionskonsistenz aufrechtzuerhalten. Dies wird auch als ACID bezeichnet - Atomizität, Konsistenz, Isolierung, Haltbarkeit . Die tatsächlichen Übergänge dieser Änderungen werden in den VLFs des TLog (Datei) gespeichert. Wenn eine VLF voll ist, werden die neuesten Transaktionen in der nächsten verfügbaren VLF in sequentieller Reihenfolge gespeichert.
Ausnahmen
Wenn jedoch das Ende der TLog-Datei erreicht ist, werden die Änderungen in der ersten VLF am Anfang der TLog-Datei gespeichert. (erklärt in Inside the Storage Engine: Mehr zur Zirkularität des Protokolls )
Wenn keine verfügbaren VLFs zum Speichern neuer Transaktionen frei sind und die Einstellung für das automatische Wachstum konfiguriert ist, vergrößert das Datenbankmodul die TLog-Datei um den definierten Betrag und erstellt abhängig von der in den Einstellungen für das automatische Wachstum und der Formel definierten Größe zusätzliche VLFs Erläuterungen unter Wichtige Änderung des VLF-Erstellungsalgorithmus in SQL Server 2014 . Weitere Transaktionen können dann in der nächsten VLF in der TLog-Datei gespeichert werden.
Sichern der TLog-Datei
Wenn Sie eine Sicherung der TLog-Datei auslösen, teilen Sie dies dem Datenbankmodul lediglich mit
- Schauen Sie sich die TLog-Datei an
- Bestimmen Sie, wann die letzte Transaktionsprotokollsicherung durchgeführt wurde (LSN: Log Sequence Number; für weitere Untersuchungen).
- Legen Sie einen Prüfpunkt in der TLog-Datei fest ( Database Checkpoints (SQL Server) ).
- Speichern Sie eine Sicherungskopie der TLog-Datei auf Festplatte / Band, während Sie die vorherige LSN und die zuletzt festgeschriebene LSN unmittelbar vor Abschluss der Sicherung verfolgen
- Übertragen Sie alle Änderungen in die "Datenbank"
- Markieren Sie die VLFs als wiederverwendbar
Bisher wurde in der TLog-Datei kein Speicherplatz freigegeben, den die Datenbank-Engine wiederverwenden kann ...
Automatisches Abschneiden der TLog-Datei
... aber wenn das Datenbankmodul einige Zyklen übrig hat und nicht unter starkem Druck steht, wird es gelegentlich die TLog-Datei überprüfen, den Checkpoint beachten und die VLFs zur Wiederverwendung freigeben. Der Speicherplatz in der TLog-Datei wird weiterhin von den VLFs verwendet (gleiche Größe, gleicher Speicherort), sie können jedoch wiederverwendet werden.
Dies ist in Transaktionsprotokollabschneidung dokumentiert :
Außer wenn dies aus irgendeinem Grund verzögert wird, erfolgt das Abschneiden des Protokolls automatisch wie folgt: - Nach dem einfachen Wiederherstellungsmodell nach einem Prüfpunkt.
- Unter dem vollständigen Wiederherstellungsmodell oder dem massenprotokollierten Wiederherstellungsmodell nach einer Protokollsicherung, wenn seit der vorherigen Sicherung ein Prüfpunkt aufgetreten ist. Weitere Informationen finden Sie unter "Protokollkürzung unter den vollständigen und massenprotokollierten Wiederherstellungsmodellen" weiter unten in diesem Thema.
Es gibt einige Fälle, in denen dies nicht der Fall ist:
Obwohl automatisch, kann das Abschneiden des Protokolls durch eine Vielzahl von Faktoren verzögert werden. Informationen darüber, was das Abschneiden von Protokollen verzögern kann, finden Sie unter Faktoren, die das Abschneiden von Protokollen verzögern können .
Visualisieren der Protokollkürzung
Das Abschneiden von Protokollen kann beobachtet werden, wenn Sie die TLog-Größe mithilfe von SQL-Anweisungen oder des Datenbankbereichsberichts in der SSMS-Benutzeroberfläche abfragen. Möglicherweise stellen Sie fest, dass der verwendete Speicherplatz in der TLog-Datei möglicherweise nur 1% der verfügbaren TLog-Dateigröße beträgt.
Schrumpfen oder nicht schrumpfen
Die allgemeine Empfehlung lautet , die TLog-Datei nicht zu verkleinern, da sie aus einem bestimmten Grund gewachsen ist und möglicherweise wieder auf die Größe anwächst, die sie einmal hatte. Aber das ist eine Geschichte für einen anderen Beitrag. Es gibt einige gute Gründe, zum Beispiel, wenn Sie die Größe der VLFs in Ihrer TLog-Datei neu erstellen.
Beantwortung Ihrer Fragen
Inline direkt unter Ihren Annahmen und Fragen
Mein Verständnis war, dass das Sichern einer Datenbank:
- Schneidet das Transaktionsprotokoll ab und
Dies ist eine falsche Annahme. Das Sichern Ihrer Datenbank (FULL, DIFFERENTIAL) hat nichts mit den TLog-Dateien zu tun. Eine vollständige Sicherung erstellt einen konsistenten Status Ihrer Datenbank zusammen mit den festgeschriebenen Transaktionen aus der TLog-Datei. Eine DIFF-Sicherung erstellt einen konsistenten Status aller früheren TLog-Sicherungen seit der letzten vollständigen Sicherung Ihrer Datenbank.
Bei einer TLOG-Sicherung wird jedoch eine Sicherung der festgeschriebenen Transaktionen aus der TLog-Datei erstellt, ein Prüfpunkt festgelegt und möglicherweise (wenn nicht unter hoher Last) die VLFs zur Wiederverwendung freigegeben.
Nein, wenn man die FULL- und DIFF-Backups berücksichtigt. Nein, wenn Sie die TLOG-Sicherungen in Betracht ziehen, aber die VLFs in der TLog-Datei werden freigegeben, wenn das Datenbankmodul etwas Zeit hat.
Was macht das Abschneiden von Protokollen tatsächlich mit der Protokolldatei (LDF)? Dieser Vorgang soll verhindern, dass die Festplatten voll werden.
Durch das Abschneiden der Protokolle können die VLFs wiederverwendet werden. Das ist alles.
Dieser Prozess kann den Vorteil haben , dass die TLOG - Datei von wachsenden verhindern IF Auto-Wachstum Einstellungen festgelegt wurden.
Wenn keine Einstellungen für das automatische Wachstum festgelegt wurden , weil Ihr Anforderungs-Engineering-Prozess festgestellt hat, dass die TLog-Datei eine feste Größe hat, wird der TLog im schlimmsten Fall voll, da keine TLog-Sicherung erfolgt und daher keine VLFs freigegeben werden. Der TLog kann nicht wachsen und die VLFs werden nicht freigegeben, damit weitere Transaktionen in die TLog-Datei (oder intern in VLFs) geschrieben werden können.