Ich habe eine große Datenbank (in zweistelliger Millionenhöhe), für die ich eine vollständige Datenbanksicherung durchführen werde .
Die Datenbank ist jedoch groß genug, damit Transaktionen vor und während sowie während und nach der Sicherung gestartet werden können.
Zum Beispiel:
T0 = Transaction A start
T1 = Full database backup start
T2 = Transaction B start (will not deadlock with A)
T3 = Transaction A commit/rollback (does not matter, does it?)
T4 = Full database backup end
T5 = Transaction B commit/rollback (again, does not matter, does it?)
T0 T1 T2 T3 T4 T6
||----------||----------||----------||----------||----------||---------->
Mein Verständnis ist, dass während einer Sicherung keine Sperren verwendet werden (obwohl andere Leistungsprobleme aufgrund beispielsweise hoher E / A auftreten können) , aber ich bin nicht sicher, was ich garantieren kann, was festgeschrieben wird oder nicht.
Ich mache mir auch keine Sorgen, dass sich die Datenbank in einem inkonsistenten Zustand befindet, sondern wie dieser Zustand sein wird (auch wenn er nicht deterministisch ist, wenn es eine Reihe von Regeln gibt, die konsistent angewendet werden können) und wie er dort angekommen ist ( Wie viel der Datendatei wird beispielsweise zusammen mit dem Transaktionsprotokoll zum Erstellen einer Sicherungsdatei verwendet?