Physische Architektur des Transaktionsprotokolls

Aktualisiert: 14. April 2006

Das Transaktionsprotokoll in einer Datenbank erstreckt sich über eine oder mehrere physikalische Dateien. Konzeptionell ist die Protokolldatei eine Folge von Protokolldatensätzen. Physikalisch wird die Folge von Protokolldatensätzen effizient in dem Satz physikalischer Dateien gespeichert, die das Transaktionsprotokoll implementieren.

SQL Server-Datenbankmodul teilt jede physikalische Protokolldatei intern in mehrere virtuelle Protokolldateien auf. Virtuelle Protokolldateien haben keine feste Größe, und es gibt keine feststehende Anzahl virtueller Protokolldateien für eine physikalische Protokolldatei. Datenbankmodul wählt die Größe der virtuellen Protokolldateien dynamisch beim Erstellen oder Erweitern von Protokolldateien aus. Datenbankmodul versucht, immer nur eine kleine Anzahl virtueller Dateien aufrechtzuerhalten. Welche Größe die virtuellen Dateien haben, nachdem eine Protokolldatei erweitert wurde, hängt von der zusammengenommenen Größe des vorhandenen Protokolls und dem Umfang der Dateierweiterung ab. Die Größe oder Anzahl der virtuellen Protokolldateien kann nicht von Administratoren konfiguriert oder festgelegt werden.

Virtuelle Protokolldateien beeinträchtigen die Systemleistung nur dann, wenn die Definition der Protokolldateien kleine Werte für size und growth_increment enthält. Wenn diese Protokolldateien durch viele kleine Schritte auf eine beträchtliche Größe anwachsen, enthalten sie eine große Anzahl virtueller Protokolldateien. Hierdurch werden möglicherweise das Starten der Datenbank sowie Protokollsicherungs- und -wiederherstellungsvorgänge verlangsamt. Es wird empfohlen, den Protokolldateien für size einen Wert zuzuweisen, der nahezu der endgültigen erforderlichen Größe entspricht, und auch einen relativ hohen Wert für growth_increment festzulegen.

Das Transaktionsprotokoll ist eine umbrechende Protokolldatei. Nehmen Sie beispielsweise an, eine Datenbank verfügt über eine physikalische Protokolldatei, die in vier virtuelle Protokolldateien unterteilt ist. Wenn die Datenbank erstellt wird, beginnt die logische Protokolldatei am Anfang der ersten physikalischen Protokolldatei. Neue Protokolldatensätze werden am Ende des logischen Protokolls hinzugefügt, das in Richtung des Endes des physikalischen Protokolls erweitert wird. Beim Abschneiden eines Protokolls werden alle virtuellen Protokolle freigegeben, deren Datensätze sich ohne Ausnahme vor der Mindestwiederherstellungs-Protokollfolgenummer (Minimum Recovery Log Sequence Number, MinLSN) befinden. Die MinLSN ist die Protokollfolgenummer des ältesten Protokolldatensatzes, der für einen erfolgreichen Rollback der gesamten Datenbank benötigt wird. Das Transaktionsprotokoll in der Beispieldatenbank würde in etwa so aussehen wie das Protokoll in der folgenden Abbildung.

Protokolldatei unterteilt in vier virtuelle Protokolldateien

Wenn das Ende des logischen Protokolls das Ende der physikalischen Protokolldatei erreicht, erfolgt ein Umbruch, und neue Protokolldatensätze werden nun wieder am Anfang der physkalischen Protokolldatei eingefügt.

Protokolleinträge werden wieder am Anfang der Protokolldatei eingefügt

Solange das Ende des logischen Protokolls nicht den Anfang des logischen Protokolls erreicht, wird dieser Kreislauf endlos wiederholt. Wenn die alten Protokolldatensätze häufig genug abgeschnitten werden, um ausreichend Platz für alle neuen Protokolldatensätze freizugeben, die bis zum nächsten Prüfpunkt erstellt werden, wird das Protokoll nie vollständig aufgefüllt. Wenn das Ende des logischen Protokolls jedoch den Anfang des logischen Protokolls erreicht, wird eine der beiden folgenden Aktionen eingeleitet:

  • Wenn die FILEGROWTH-Einstellung für das Protokoll aktiviert ist und auf dem Datenträger noch Speicherplatz verfügbar ist, wird die Datei um den Wert vergrößert, der in growth_increment angegeben ist, und neue Protokolldatensätze werden dieser Erweiterung hinzugefügt. Weitere Informationen zur FILEGROWTH-Einstellung finden Sie unter ALTER DATABASE (Transact-SQL).
  • Wenn die FILEGROWTH-Einstellung nicht aktiviert ist oder der Datenträger, auf dem sich die Protokolldatei befindet, über weniger freien Speicherplatz verfügt als in growth_increment angegeben, wird der Fehler 9002 generiert.

Wenn das Protokoll mehrere physikalische Protokolldateien enthält, durchläuft das logische Protokoll alle physikalischen Protokolldateien, bevor es umbricht und neue Einträge am Anfang der ersten physikalischen Protokolldatei einfügt.

Siehe auch

Konzepte

Faktoren, die das Abschneiden des Protokolls verzögern können.
Logische Architektur des Transaktionsprotokolls
Verwenden von Transaktionsprotokollsicherungen
Einführung in Transaktionsprotokolle

Andere Ressourcen

Grundlegendes zur Architektur des Transaktionsprotokolls

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

14. April 2006

Neuer Inhalt:
  • Eine Definition des Begriffs MinLSN wurde hinzugefügt.