SQL Server-Isolationsstufe: der Unterschied zwischen festgeschriebenem und wiederholbarem Lesevorgang
Die Isolationsstufen „Read Committed“ und „Repeatable Read“ von SQL Server mögen auf den ersten Blick ähnlich aussehen, es gibt jedoch erhebliche Unterschiede.
Read Committed
Read Committed stellt sicher, dass alle von der Transaktion gelesenen Daten beim Lesen festgeschrieben werden. Dies verhindert, dass Transaktionen „schmutzige Daten“ sehen, d. h. Daten, die sich während einer nicht festgeschriebenen Transaktion in einem Zwischenzustand befanden. Ein festgeschriebener Lesevorgang garantiert jedoch nicht, dass nachfolgende Lesevorgänge derselben Daten denselben Wert zurückgeben. Andere Transaktionen können weiterhin Daten ändern oder löschen, die vor Abschluss der ersten Transaktion gelesen wurden.
Beispiel:
- Transaktion A liest die Zeile mit dem Wert „1“.
- Transaktion B aktualisiert dieselbe Zeile auf „2“ und führt einen Commit durch.
- Wenn Transaktion A die Zeile vor dem Festschreiben erneut liest, sieht sie je nach Zeitpunkt möglicherweise den alten Wert ('1') oder den neuen Wert ('2').
Wiederholbares Lesen
Wiederholbare Lesevorgänge sorgen für ein höheres Maß an Isolation und stellen Folgendes sicher:
- Während einer Transaktion gelesene Daten können nicht von anderen Transaktionen geändert oder gelöscht werden, bevor die erste Transaktion festgeschrieben wird.
- Solange die erste Transaktion nicht festgeschrieben ist, geben nachfolgende Lesevorgänge derselben Daten denselben Wert zurück.
Beispiel:
- Transaktion A liest die Zeile mit dem Wert „1“.
- Transaktion B versucht, dieselbe Zeile zu aktualisieren, wird jedoch blockiert, bis Transaktion A festgeschrieben wird.
- Wenn Transaktion A die Zeile erneut liest, wird ihr immer derselbe Wert ('1') angezeigt, bis sie festgeschrieben wird.
Zusammenfassung
- Read commit verhindert „Dirty Reads“, garantiert jedoch nicht die Konsistenz nachfolgender Lesevorgänge.
- Wiederholbare Lesevorgänge stellen die Konsistenz nachfolgender Lesevorgänge sicher und verhindern, dass andere Transaktionen die gelesenen Daten ändern, bevor die erste Transaktion festgeschrieben wird.
- Höhere Isolationsstufen bieten stärkere Garantien für die Datenkonsistenz, können jedoch die Parallelität und Leistung verringern.
Das obige ist der detaillierte Inhalt vonSQL Server-Isolationsstufen: Was ist der Unterschied zwischen festgeschriebenem und wiederholbarem Lesevorgang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!