Heim  >  Artikel  >  Java  >  Detaillierte Erläuterung der Spring-Transaktionsisolationsstufe

Detaillierte Erläuterung der Spring-Transaktionsisolationsstufe

黄舟
黄舟Original
2017-03-03 10:18:451453Durchsuche

Im Frühjahr sind 5 verschiedene Transaktionsisolationsstufen definiert:
1. ISOLATION_DEFAULT (Im Allgemeinen können Sie diese Konfiguration verwenden) ;

Dies ist eine PlatfromTransactionManager-Standardisolationsstufe. Verwenden Sie DatenbankStandard-Transaktionsisolationsstufe.
2. ISOLATION_READ_UNCOMMITTED 4 p" L. I' F; k1 {) a. D( E5 ?: V
Dies ist die niedrigste Isolationsstufe für eine Transaktion, die eine weitere Transaktion ermöglicht kann die nicht festgeschriebenen Daten dieser Transaktion sehen.
Diese Situation tritt bei der Standardtransaktionsisolationsstufe der meisten Datenbanken nicht auf.1 G7 Eine andere Transaktion kann die nicht festgeschriebenen Daten dieser Transaktion nicht lesen. Diese Transaktionsisolationsstufe kann fehlerhafte Lesevorgänge vermeiden, es können jedoch nicht wiederholbare Lesevorgänge und Phantom-Lesevorgänge auftreten. : U8 m# n8 g1 k( E: N

Was ist ein Dirty Read? (verursacht durch Modifikation und Unverbindlichkeit)
Zum Beispiel: Zhang San's Das Gehalt beträgt 5000, Transaktion A ändert sein Gehalt auf 8000, aber Transaktion A wurde noch nicht übermittelt. Gleichzeitig liest Transaktion B das Gehalt von Zhang San und liest, dass das Gehalt von Zhang San 8000 beträgt. Dann tritt in der Transaktion eine Ausnahme auf A. und die Transaktion wurde auf 5000 zurückgesetzt. Schließlich handelt es sich bei den von Transaktion B gelesenen Daten von Zhang San um schmutzige Daten, und B j d! # i) s$ i
(Diese Situation tritt bei der Standard-Transaktionsisolationsstufe der meisten Datenbanken nicht auf)
; 4. ISOLATION_REPEATABLE_READ Diese Transaktionsisolationsstufe kann schmutzige Lesevorgänge und nicht wiederholbare Lesevorgänge verhindern. 3 [* {- F2 s. wiederholbares Lesen? (
Änderungsursachen ) 6 h2 E% J, S7 f9 n+ m0 U4 ]" ?% e. a

Zum Beispiel: / ^7 Y # T6 |& Z' B
In Transaktion A wird gelesen, dass Zhang Sans Gehalt 5000 beträgt. Der Vorgang wurde noch nicht abgeschlossen und die Transaktion wurde noch nicht eingereicht. 5 K: N6 c" [$ p: J4 L/ I" BGleichzeitig änderte Transaktion B das Gehalt von Zhang San auf 8000 und reichte die Transaktion ein. Anschließend wird in Transaktion A das Gehalt von Zhang San erneut gelesen und das Gehalt beträgt 8.000. Die Ergebnisse zweier Lesevorgänge in einer Transaktion sind inkonsistent, was zu nicht wiederholbaren Lesevorgängen führt. (Diese Situation tritt bei den meisten Datenbanken nicht auf)
h+ U! >Dies ist die teuerste, aber zuverlässigste Transaktionsisolationsstufe. Transaktionen werden als sequentielle Ausführung verarbeitet. Neben der Verhinderung von Dirty Reads und nicht wiederholbaren Lesevorgängen werden auch Phantom Reads vermieden. % c0 @8 E& g" x1 . |9 w9 N+ ~
Zum Beispiel: A hat derzeit 10 Mitarbeiter mit einem Gehalt von 5.000. Transaktion A liest alle 10 Mitarbeiter mit einem Gehalt von 5.000. Zu diesem Zeitpunkt wird in Transaktion B ein Gehalt von 5.000 eingefügt. Dies ist der Fall, wenn Transaktion A den Mitarbeiter mit einem Gehalt von 5.000 liest und der Datensatz 11 Personen beträgt Transaktionsisolationsstufe der meisten Datenbanken.
_! Die Stufe der Datenbank wurde garantiert. Vermeiden Sie fehlerhafte Lesevorgänge und nicht wiederholbare Lesevorgänge. Bei den standardmäßigen Sperren auf Tabellenebene muss die Transaktionsisolationsstufe ISOLATION_SERIALIZABLE sorgfältig verwendet werden , was einen großen Einfluss auf die Leistung hat. Wenn kein besonderer Bedarf besteht, konfigurieren Sie es einfach so, dass die Standardtransaktionsisolationsstufe der Datenbank verwendet wird.
Oben finden Sie eine detaillierte Erläuterung der Isolationsstufe von Spring Transaktionen und mehr. Weitere Informationen finden Sie auf der chinesischen PHP-Website (www.php.cn)

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn