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