Angenommen, SQLServer2008R2 und höher mit Datenbanken im vollständigen Wiederherstellungsmodus.
Ich dachte immer :
Wenn eine Transaktion festgeschrieben wird (COMMIT), wird die Transaktion in das Transaktionsprotokoll im RAM geschrieben.
Wenn ein CHECKPOINT auftritt (nach einiger Zeit und / oder einigen Transaktionen und anderen Kriterien), werden die Transaktionen zwischen dem letzten CHECKPOINT und dem aktuellen auf die Festplatte geschrieben.
Wenn ein Sicherungsprotokoll erstellt wird, werden die Daten in die MDF-Datei geschrieben.
Hab ich recht? Einige meiner Kollegen sagen, ich liege falsch und es ist schwierig, die richtige Antwort zu finden, selbst mit der BOL.
Vielen Dank!
sql-server
madoxav
quelle
quelle
Antworten:
Leider gibt es in den Antworten eine Reihe von Fehlern in Bezug auf die Funktionsweise von COMMIT. Ich werde daher einen weiteren hinzufügen. Weitere Informationen und Grundlagen zu SQL Server 2000-E / A finden Sie unter Funktionsweise: Bob Dorrs SQL Server-E / A-Präsentation . So funktioniert es:
Alle Schreibvorgänge (Änderungen) für vollständig protokollierte Daten erfolgen in genau der folgenden Reihenfolge (siehe Grundlegendes zur Ausführung einer Abfrage durch SQL Server: Daten schreiben ):
Ein COMMIT führt Folgendes aus
Ein CHECKPOINT hat die folgende (vereinfacht), siehe Wie Checkpoints Arbeit tun und was protokolliert wird :
Writes funktionieren anders für minimal protokollierte Operationen finden Operationen , die minimal protokolliert werden können . Die minimal protokollierten Operationen verhalten sich ungefähr wie folgt (vereinfacht):
quelle
Eine Transaktion wird in das Transaktionsprotokoll geschrieben, bevor sogar die Seite oder die Daten geändert werden, wie durch die Abfrage angefordert. Dies wird als Write Ahead Logging (WAL) bezeichnet. Wenn SQL Server abstürzt, während eine Seite im Speicher aktualisiert wird, stellt WAL sicher, dass das DB-Modul das Transaktionsprotokoll lesen und die Transaktion zurücksetzen kann. Dies ist eine ACID-Eigenschaft eines RDBMS.
Ein Prüfpunkt löscht verschmutzte Seiten aus dem Puffer auf die Festplatte. Bei Tempdb verhält es sich etwas anders . Eine schmutzige Seite hat sich geändert, seit sie von der Festplatte gelesen wurde. Dieser Prüfpunktprozess erstellt eine Markierung im Transaktionsprotokoll bis zu dem Punkt, an dem die Transaktionen festgeschrieben wurden. Nach einem Fehler weiß die Wiederherstellung, dass alle Transaktionen bis zu dieser Marke festgeschrieben wurden. Sie können Checkpoint manuell mit einem TSQL-Befehl ausgeben.
Nein, wenn das Sicherungsprotokoll erstellt wird, kopiert SQL Server die Transaktionsprotokollinformationen aus der Datenbankprotokolldatei auf den Datenträger, auf dem Sie die Sicherung erstellen. Eine Sicherungsoperation liest Daten von der Festplatte und schreibt Daten auf die Festplatte.
Ich möchte, dass Sie unten Links lesen
Grundlegendes zu Protokollierung und Wiederherstellung in SQL Server Mark hat bereits darauf hingewiesen
SQL Server 2008-Handbuch für Interna und Fehlerbehebung
Transaktionsprotokollarchitektur und -verwaltung
quelle
Im Folgenden werden die Dinge für Sie geklärt:
Beziehen auf :
quelle