Maison > Article > base de données > Quelle est la différence entre les lectures non répétables et les lectures fantômes ?
Différence : L'objectif de la lecture non répétable est la modification dans les mêmes conditions, les valeurs lues pour la première et la deuxième fois sont différentes ; L'objectif de la lecture fantôme est l'ajout ou la suppression ; dans les mêmes conditions, le nombre d'enregistrements lus pour la première et la deuxième fois est différent. Du point de vue du contrôle, la lecture non répétable doit uniquement verrouiller les enregistrements qui remplissent les conditions, tandis que la lecture fantôme doit verrouiller les enregistrements qui remplissent les conditions et les enregistrements similaires.
L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.
Explication concise :
Le point clé de la lecture non répétable est la modification :
Mêmes conditions, les données que vous avez lues, lorsque vous les relisez, vous constatez que les valeurs sont différentes
L'objectif de la lecture fantôme est d'ajouter ou de supprimer
Mêmes conditions, n°1 Le nombre d'enregistrements lus deux fois et la deuxième fois sont différents
Bien sûr, d'après les résultats globaux, il semble que les résultats des deux lectures soient incohérents.
Mais si vous D'un point de vue contrôle, la différence entre les deux est relativement grande
Pour le premier, il vous suffit de verrouiller les enregistrements qui remplissent les conditions
Pour les premiers Les seconds, pour verrouiller les enregistrements qui remplissent les conditions et ceux qui sont similaires
Détails :
1) « Non autorisé » Lecture répétée » fait référence à la lecture des mêmes données plusieurs fois au cours d'une transaction. Avant la fin de cette transaction, une autre transaction accède également aux mêmes données. Ensuite, entre les deux lectures de données de la première transaction, du fait de la modification de la deuxième transaction, les données lues deux fois par la première transaction peuvent être différentes. De cette façon, les données lues deux fois au sein d’une transaction sont différentes, on parle donc de lecture non répétable. Par exemple, un éditeur lit deux fois le même document, mais entre les lectures, l'auteur réécrit le document. Lorsque l'éditeur lit le document une seconde fois, le document a changé. Les lectures brutes ne sont pas reproductibles. Ce problème peut être évité si les éditeurs ne peuvent lire le document qu'une fois que l'auteur a fini de l'écrire
Pour éviter cette situation, vous pouvez généralement définir le niveau d'isolement avec un niveau d'isolement de tran répétable en lecture afin que la transaction A lors de la lecture les données du tableau T deux fois, si la transaction B tente de modifier les données du tableau T (les détails sont lorsque la transaction A lit les données), elle sera bloquée jusqu'à ce que la transaction A soit validée ! Cela garantit la cohérence des données lues deux fois par la transaction A.
2) La lecture fantôme fait référence à un phénomène qui se produit lorsque les transactions ne sont pas exécutées indépendamment. Par exemple, la première transaction modifie les données d'une table, et cette modification implique toutes les lignes de données de la table. Parallèlement, la deuxième transaction modifie également les données de cette table. Cette modification insère une ligne de nouvelles données dans la table. Puis, à l’avenir, l’utilisateur qui effectue la première transaction constatera qu’il reste des lignes de données non modifiées dans la table, comme si une hallucination s’était produite. Par exemple, un éditeur modifie un document soumis par un auteur, mais lorsque la production fusionne ses modifications dans la copie principale du document, on découvre que l'auteur a ajouté du nouveau matériel non édité au document. Ce problème peut être évité si personne ne peut ajouter de nouveaux éléments au document tant que les éditeurs et le service de production n'ont pas fini de travailler sur le document original.
Recommandations d'apprentissage gratuites associées : Tutoriel vidéo 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!