Maison > Article > base de données > MySQL a plusieurs niveaux d'isolement
MySQL a 4 niveaux d'isolement : 1. Lire le contenu non validé ; dans ce niveau d'isolement, toutes les transactions peuvent voir les résultats d'exécution d'autres transactions non validées. 2. Lisez le contenu de la soumission ; ce n'est qu'après la soumission d'une transaction que les données qu'elle modifie seront vues par d'autres choses. 3. Lecture répétable ; les données vues lors de l'exécution d'une transaction sont toujours cohérentes avec les données vues au démarrage de la transaction. 4. Sérialisable ; en forçant le tri des transactions, ce qui rend impossible leur conflit les unes avec les autres, résolvant ainsi le problème de lecture fantôme.
L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.
Une transaction a des caractéristiques ACIDE, à savoir (atomicité, cohérence, isolement, durabilité, c'est-à-dire atomicité, cohérence, isolement et durabilité).
Les quatre niveaux d'isolement de MySQL
Le standard SQL définit 4 types de niveaux d'isolement, dont quelques règles spécifiques pour limiter les transactions internes et externes qui les changements sont visibles et lesquels sont invisibles. Des niveaux d’isolation inférieurs prennent généralement en charge une concurrence plus élevée et entraînent une surcharge système inférieure. [Recommandation du didacticiel vidéo : Tutoriel MySQL]
1. Lire le contenu non validé (lecture-non validé)
Dans ce niveau d'isolement, toutes les transactions peuvent voir les résultats d’exécution d’autres transactions non validées. Ce niveau d'isolation est rarement utilisé dans les applications pratiques car ses performances ne sont guère meilleures que les autres niveaux.
Le problème qui se produit avec ce niveau d'isolement est le suivant : Dirty Read, c'est-à-dire que les données non validées sont lues.
2. Lecture-commise
Il s'agit du niveau d'isolement par défaut de la plupart des systèmes de bases de données (mais pas celui par défaut de MySQL). Cela répond à la définition simple de l'isolement : une transaction ne peut voir que les modifications apportées par les transactions validées.
Le problème avec ce niveau d'isolement est le suivant : lecture non répétable, c'est-à-dire qu'une lecture non répétable signifie que nous pouvons voir des résultats différents lorsque nous exécutons exactement la même instruction select dans la même transaction.
Les raisons possibles de cette situation sont :
1), il y a un nouveau commit dans une transaction croisée, entraînant des modifications de données
2), a Lorsque le la base de données est exploitée par plusieurs instances, d'autres instances de la même transaction peuvent avoir de nouveaux commits pendant le traitement de l'instance
3. >Il s'agit du niveau d'isolation des transactions par défaut de MySQL, qui garantit que plusieurs instances de la même transaction verront les mêmes lignes de données lors de la lecture simultanée des données.
Mais en théorie, cela entraînera un autre problème épineux : Phantom Read. En termes simples, la lecture fantôme signifie que lorsque l'utilisateur lit une certaine plage de lignes de données, une autre transaction insère une nouvelle ligne dans la plage. Lorsque l'utilisateur lit une autre plage de lignes de données, vous constaterez qu'il y en a. nouvelles lignes "fantômes". Les moteurs de stockage InnoDB et Falcon résolvent ce problème grâce au mécanisme de contrôle de concurrence multiversion (MVCC, Multiversion Concurrency Control).4. Sérialisable
Il s'agit du niveau d'isolement le plus élevé qui résout le problème magique en forçant l'ordre des transactions et en rendant impossible leur conflit de lecture. la question. En bref, il ajoute un verrou partagé sur chaque ligne de données lue. À ce niveau, de nombreux délais d'attente et conflits de verrouillage peuvent en résulter.
À ce niveau, un grand nombre de délais d'attente et de conflits de verrouillage peuvent en résulter. Apprentissage recommandé :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!