Maison >Problème commun >Qu'est-ce que la lecture fantôme ?

Qu'est-ce que la lecture fantôme ?

Guanhui
Guanhuioriginal
2020-06-11 11:35:509133parcourir

Qu'est-ce que la lecture fantôme ?

Qu'est-ce que la lecture fantôme ?

La lecture fantôme signifie que la transaction A obtient d'abord N éléments de données basés sur l'index conditionnel, puis la transaction B modifie M éléments de données autres que ces N éléments de données ou ajoute M éléments de données qui remplir les conditions de recherche de la transaction A. En conséquence, la transaction A recherche à nouveau et trouve N+M éléments de données, ce qui provoquera des lectures fantômes.

Comment résoudre la lecture fantôme ?

  • Résolu par le verrouillage à clé suivante.

  • La raison de la lecture fantôme est que les verrous de ligne ne peuvent verrouiller que les lignes, mais lors de l'insertion de nouveaux enregistrements, ce qui doit être mis à jour est "l'espace" entre les enregistrements. Par conséquent, afin de résoudre les lectures fantômes, InnoDB introduit des verrous d'espacement.

  • Le verrouillage de l'espacement n'est efficace qu'au niveau de lecture répétable

  • La combinaison du verrouillage de l'espacement et du verrouillage de la rangée est appelée verrouillage de la clé suivante , chaque verrouillage à clé suivante est un intervalle ouvert et fermé.

Parmi les quatre niveaux d'isolement définis dans la base de données,

le niveau d'isolement le plus élevé SERIALIZABLE_READ peut garantir qu'il n'y aura pas de problème de lecture fantôme.

Lecture répétable (RR)

Pour la lecture en cours, le niveau d'isolation RR garantit que l'enregistrement lu est verrouillé (verrouillage de l'enregistrement) et que la plage de lecture est garantie d'être verrouillée . , les nouveaux enregistrements qui répondent aux conditions de requête ne peuvent pas être insérés (verrouillage des espaces) et il n'y a pas de phénomène de lecture fantôme.


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