Le niveau d'isolement par défaut de la plupart des systèmes de bases de données est Read commit (mais MySQL ne l'est pas). La lecture validée satisfait à la définition simple de l'isolement mentionnée précédemment : lorsqu'une transaction démarre, seules les modifications apportées par les transactions validées peuvent être vues. En d’autres termes, toutes les modifications apportées par une transaction depuis le début jusqu’au moment où elle est validée sont invisibles pour les autres transactions. Ce niveau est parfois appelé lecture non répétable, car exécuter deux fois la même requête peut entraîner des résultats différents.
La lecture répétable résout le problème de lecture sale. Ce niveau garantit que les résultats de la lecture du même enregistrement plusieurs fois dans la même transaction sont cohérents. Cependant, en théorie, le niveau d'isolement de lecture répétable ne peut toujours pas résoudre un autre problème de lecture fantôme (lecture fantôme). La lecture dite fantôme signifie que lorsqu'une transaction lit des enregistrements dans une certaine plage, une autre transaction insère un nouvel enregistrement dans la plage. Lorsque la transaction précédente lit à nouveau les enregistrements dans la plage, elle produira des lignes fantômes. Les moteurs de stockage InnoDB et XtraDB résolvent le problème de lecture fantôme grâce au contrôle de concurrence multiversion (MVCC).
Sérialisable est le niveau d'isolement le plus élevé. Cela évite le problème de lecture fantôme mentionné précédemment en forçant la sérialisation des transactions. Pour faire simple, Serialisable ajoutera un verrou à chaque ligne de données lues, ce qui peut entraîner de nombreux problèmes de délai d'attente et d'acquisition de verrous. Ce niveau d'isolement est rarement utilisé dans les applications réelles. Ce niveau ne doit être pris en compte que lorsqu'il est absolument nécessaire pour garantir la cohérence des données et que l'absence de concurrence est acceptable.
Lire non engagé (Lire le contenu non engagé) | ✓ | ||
---|---|---|---|
Lire engagé (Lire le contenu engagé) | × | ✓ | |
Lecture répétable (Répétable lecture) | × | × | |
Sérialisable (Sérialisable) | × | × | |
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!