2017-01-02 2 views
3

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?

Antwort

Verwandte Themen