Maison  >  Article  >  base de données  >  Introduction au contenu du niveau d'isolation des transactions Mysql (lecture du commit)

Introduction au contenu du niveau d'isolation des transactions Mysql (lecture du commit)

不言
不言avant
2019-01-09 10:55:053755parcourir

Le contenu de cet article est une introduction au contenu du niveau d'isolation des transactions Mysql (lecture du commit). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Niveau d'isolation des transactions MySQL en lecture de validation

Afficher le niveau d'isolation des transactions MySQL
mysql> show variables like '%isolation%';
+---------------+----------------+
| Variable_name | Value          |
+---------------+----------------+
| tx_isolation  | READ-COMMITTED |
+---------------+----------------+
1 row in set (0.00 sec)

Vous pouvez voir que le niveau d'isolation des transactions actuel est READ-COMMITTED lecture de validation

Jetons un coup d'œil aux détails de l'isolation des transactions sous le niveau d'isolation actuel. Ouvrez deux terminaux de requête A et B.

Il y a un order tableau ci-dessous, les données initiales sont les suivantes

mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      1 |
+----+--------+
1 row in set (0.00 sec)
La première étape consiste à ouvrir la transaction en A et B
mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)
La deuxième étape Interroger la valeur number dans deux terminaux >
  • La troisième étape consiste à modifier le

    en B à 2, mais ne pas valider la transaction

La quatrième étape consiste à interroger la valeur dans A
 mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      1 |
+----+--------+
1 row in set (0.00 sec)
  • On constate que la valeur dans A n'a pas été modifiée.

    La cinquième étape consiste à soumettre la transaction B et à interroger à nouveau la valeur dans A
 mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      1 |
+----+--------+
1 row in set (0.00 sec)
Bnumber
mysql> update `order` set number=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      1 |
+----+--------+
1 row in set (0.00 sec)
A
  • J'ai constaté que la valeur dans A a changé

    Sixième étape, validez la transaction dans A et interrogez les valeurs de A et B encore.
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)
B
  • On constate que les valeurs​​dans A et B ont été modifiées à 2.

    Un schéma simple est donné ci-dessous
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)
  • Nous pouvons voir que lorsque le niveau d'isolement de la transaction est
  • , lorsque la transaction dans B est validé, le résultat de la validation de la transaction B peut être lu même si A n'a pas validé. Cela résout le problème
.
mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 |      2 |
+----+--------+
1 row in set (0.00 sec)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer