Heim  >  Artikel  >  Datenbank  >  Einführung in den Inhalt der MySQL-Transaktionsisolationsstufe (Read-Commit)

Einführung in den Inhalt der MySQL-Transaktionsisolationsstufe (Read-Commit)

不言
不言nach vorne
2019-01-09 10:55:053756Durchsuche

Der Inhalt dieses Artikels ist eine Einführung in den Inhalt der MySQL-Transaktionsisolationsstufe (Read Commit). Ich hoffe, dass er für Sie hilfreich ist.

MySQL-Transaktionsisolationsstufe Lese-Commit

MySQL-Transaktionsisolationsstufe
mysql> show variables like '%isolation%';
+---------------+----------------+
| Variable_name | Value          |
+---------------+----------------+
| tx_isolation  | READ-COMMITTED |
+---------------+----------------+
1 row in set (0.00 sec)
anzeigen

Sie können sehen, dass die aktuelle Transaktionsisolationsstufe READ-COMMITTEDLese-Commit ist

Siehe unten Um die Transaktionsisolationsdetails unter der aktuellen Isolationsstufe anzuzeigen, öffnen Sie zwei Abfrageterminals A und B.

Es gibt eine order Tabelle unten, die Anfangsdaten lauten wie folgt

mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      1 |
+----+--------+
1 row in set (0.00 sec)
Der erste Schritt besteht darin, die Transaktion sowohl in A als auch in B zu öffnen
mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)
Der zweite Der Schritt besteht darin, den numberWert der beiden Terminals in
  • A

 mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      1 |
+----+--------+
1 row in set (0.00 sec)
  • B

 mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      1 |
+----+--------+
1 row in set (0.00 sec)
Der dritte Schritt besteht darin, das
in B auf 2 zu ändern, aber die Transaktion nicht festzuschreibennumber
mysql> update `order` set number=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
Der vierte Schritt besteht darin, den Wert in A abzufragen
mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      1 |
+----+--------+
1 row in set (0.00 sec)
und stellen Sie fest, dass der Wert in A nicht geändert wurde.
Der fünfte Schritt besteht darin, Transaktion B einzureichen und den Wert in A erneut abzufragen
  • B

mysql> commit;
Query OK, 0 rows affected (0.01 sec)
  • A

mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      2 |
+----+--------+
1 row in set (0.00 sec)
hat festgestellt, dass sich der Wert in A geändert hat
Der sechste Schritt besteht darin, die Transaktion in A einzureichen und die Werte von A und abzufragen B wieder.
  • A

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      2 |
+----+--------+
1 row in set (0.00 sec)
  • B

mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      2 |
+----+--------+
1 row in set (0.00 sec)
A,B gefunden Die Werte in wurden alle auf 2 geändert.
Das Folgende ist ein einfaches Diagramm

Einführung in den Inhalt der MySQL-Transaktionsisolationsstufe (Read-Commit)

Wir können sehen, dass, wenn die Transaktionsisolationsstufe
ist, wenn die Transaktion Wenn B festgeschrieben wird, kann das Ergebnis der Festschreibung der B-Transaktion gelesen werden, auch wenn A nicht festgeschrieben wurde. Dies löst das 读已提交-Problem. 脏读

Das obige ist der detaillierte Inhalt vonEinführung in den Inhalt der MySQL-Transaktionsisolationsstufe (Read-Commit). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen