Heim > Datenbank > MySQL-Tutorial > Hauptteil

Was ist der Unterschied zwischen Phantom-Read und nicht wiederholbarem Read?

王林
Freigeben: 2020-06-05 15:28:01
Original
9855 Leute haben es durchsucht

Was ist der Unterschied zwischen Phantom-Read und nicht wiederholbarem Read?

Unterschied:

Nicht wiederholbares Lesen: Unter den gleichen Bedingungen ändert sich der Wert der gelesenen Daten, wenn wir sie erneut lesen .

Phantomlesung: Unter gleichen Bedingungen ist die Anzahl der beim ersten und zweiten Mal ausgelesenen Datensätze unterschiedlich.

Detaillierte Analyse:

1. Nicht wiederholbares Lesen

Unter den gleichen Bedingungen ist der Wert der gelesenen Daten derselbe, wenn wir Lesen Sie es noch einmal. Etwas hat sich geändert.

Beispiel:

In Transaktion 1 liest A sein Gehalt als 1000, aber der Vorgang von Transaktion 1 ist zu diesem Zeitpunkt noch nicht abgeschlossen und es gibt später einen weiteren identischen Lesevorgang.

con1 = getConnection();
select salary from employee where employeeName ="A";
Nach dem Login kopieren

In Transaktion 2 änderte das Finanzpersonal das Gehalt von A auf 2000 und reichte die Transaktion ein.

con2 = getConnection();    
update employee set salary = 2000 where employeeName = "A";    
con2.commit();
Nach dem Login kopieren

Wenn A in Transaktion 1 sein Gehalt erneut liest, beträgt das Gehalt 2000.

select salary from employee where employeeName ="A";
Nach dem Login kopieren

Die Ergebnisse von zwei Lesevorgängen in einer Transaktion sind inkonsistent, was zu nicht wiederholbaren Lesevorgängen führt.

2. Phantomlesung

Unter den gleichen Bedingungen ist die Anzahl der ausgelesenen Datensätze beim ersten und zweiten Mal unterschiedlich.

Beispiel:

Es gibt derzeit 5 Mitarbeiter mit einem Gehalt von 1.000.

Transaktion 1: Lesen Sie alle Mitarbeiter mit einem Gehalt von 1.000 und lesen Sie insgesamt 10 Datensätze.

con1 = getConnection();    
Select * from employee where salary =1000;
Nach dem Login kopieren

Zu diesem Zeitpunkt wurde durch eine andere Transaktion ein Mitarbeiterdatensatz in die Mitarbeitertabelle eingefügt, und das Gehalt betrug ebenfalls 1.000

con2 = getConnection();    
Insert into employee(employeeName,salary) values("B",1000);    
con2.commit();
Nach dem Login kopieren

Transaktion 1 las erneut alle Mitarbeiter mit einem Gehalt von 1.000 Insgesamt wurden 6 Datensätze gelesen, wodurch eine Phantomlesung entsteht.

//con1    
select * from employee where salary =1000;
Nach dem Login kopieren

Empfohlenes Tutorial: MySQL-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Phantom-Read und nicht wiederholbarem Read?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!