In diesen Tagen habe ich mein Wissen über Isolationsstufe von Transaktionen verbessert.Unterschied zwischen ReadCommitted und Repeatable Read-Isolationsstufe in Update
Insbesondere hatte ich Probleme, den Unterschied zwischen Read Committed und Repeatable Read gut zu verstehen.
I've read this fantastic article, und ich verstehe alles über Dirty-Reads, nicht wiederholbare lesen und Phantome lesen, aber ich verstehe nicht, was mit mehreren Transaktionen in Update passieren.
Beispiel:
Tabelle: "Test" (Field: ID_REC - Data)
Transaktion A:
set transaction isolation level read committed;
begin transaction
update test
set DATA = 't1'
where ID_REC = 1
waitfor delay '00:00:20'
commit transaction
Transaktion B: (identisch, jedoch mit einem anderen Datensatz)
set transaction isolation level read committed;
begin transaction
update test
set DATA = 't2'
where ID_REC = 2
commit transaction
Ich führe beide Transaktionen in zwei Sekunden aus. Die zweite Transaktion startet erst, wenn die erste abgeschlossen ist. Und auch ich kann keine Abfrage ausführen (wählen Sie * aus Test).
Also: warum passiert das? Transaktionen funktionieren in verschiedenen Zeilen ... und was ist der Unterschied zwischen Read Committed und Repeatable Read?