Maison  >  Article  >  base de données  >  Comment résoudre la lecture fantôme MySQL ?

Comment résoudre la lecture fantôme MySQL ?

Guanhui
Guanhuioriginal
2020-06-18 15:39:153487parcourir

Comment résoudre la lecture fantôme MySQL ?

Comment résoudre la lecture fantôme MySQL ?

1. Instantané MVCC, enregistre un instantané des données historiques et garantit que la transaction en cours est invisible lorsque sa transaction ajoute ou supprime des données

La plupart des bases de données Contrôle de concurrence multi-version ; est mis en œuvre et tout est réalisé en enregistrant des instantanés de données.

En prenant InnoDB comme exemple, il y a deux sauts de mots redondants dans chaque ligne. L'une est la version créée de la ligne et l'autre est la version supprimée (expirée) de la ligne. Le numéro de version augmente automatiquement à chaque transaction. Chaque fois qu'une transaction récupère des données, elle récupère les données dont la version de création est inférieure à la version actuelle de la transaction et les données dont la version expirée est supérieure à la version actuelle.

La sélection ordinaire est la lecture d'un instantané.

select * from T where number = 1;

2. Le verrouillage "next-key", verrouille l'écart entre la ligne de données actuelle et les données précédentes et les données suivantes pour garantir que les données lues dans cette plage sont cohérentes.

Le verrou à clé suivante se compose de deux parties

  • Verrouillage d'enregistrement (verrouillage de rangée)

  • Verrouillage d'espacement

Les verrous d'enregistrement sont des verrous ajoutés aux index, et des verrous d'espacement sont ajoutés entre les index. (Réflexion : que se passera-t-il s'il n'y a pas d'index sur la colonne ?)

select * from T where number = 1 for update;
select * from T where number = 1 lock in share mode;
insert
update
delete

Tutoriel recommandé : "Tutoriel MySQL"

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