Maison  >  Article  >  base de données  >  Comment résoudre une lecture non répétable dans MySQL

Comment résoudre une lecture non répétable dans MySQL

coldplay.xixi
coldplay.xixioriginal
2020-09-02 13:50:198926parcourir

Méthode MySQL pour résoudre la lecture non répétable : le contrôle de concurrence multi-versions mvcc est adopté. mvcc utilise deux colonnes cachées après chaque donnée, à savoir le numéro de version de création et le numéro de version de suppression. Chaque transaction est là. sera toujours un numéro de version incrémentiel au début.

Comment résoudre une lecture non répétable dans MySQL

[Recommandations d'apprentissage associées : apprentissage mysql]

Méthode de MySQL pour résoudre les lectures non répétables :

Dans MySQL, le niveau d'isolement des transactions par défaut est répétable-lecture (repeatable-read). Afin de résoudre les lectures non répétables, innodb utilise. mvcc (plus de contrôle de concurrence de versions) pour résoudre ce problème.

mvcc utilise deux colonnes cachées (créer le numéro de version et supprimer le numéro de version) après chaque donnée. Chaque transaction aura un numéro de version incrémentiel au début

Nouveau :

insert into user (id,name,age)values(1,"张三",10);
<.>

Comment résoudre une lecture non répétable dans MySQL

Mise à jour :

update user set age = 11 where id = 1;

L'opération de mise à jour est implémentée par suppression+ajout. Tout d'abord, marquez les données actuelles à supprimer

.

Comment résoudre une lecture non répétable dans MySQL

puis ajoutez une nouvelle donnée :

Comment résoudre une lecture non répétable dans MySQL

Supprimer : L'opération de suppression consiste à mettre à jour directement le numéro de version supprimé des données avec le numéro de version de la transaction en cours

delete from user where id = 1;

Comment résoudre une lecture non répétable dans MySQL

Opération de requête :

select * from user where id = 1;

L'opération de requête est destinée à évitez d'interroger des données anciennes ou des données qui ont été modifiées par d'autres transactions, les conditions suivantes doivent être remplies :

1. Le numéro de version de la transaction en cours lors de l'interrogation doit être supérieur ou égal à la version de création. numéro

2. Lors de l'interrogation, le numéro de version de la transaction en cours doit être inférieur au numéro de version supprimé

, c'est-à-dire : create_version Cela peut éviter d'interroger des données modifiées par d'autres transactions

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn