Maison  >  Article  >  base de données  >  Quels sont les quatre niveaux d’isolation des bases de données ?

Quels sont les quatre niveaux d’isolation des bases de données ?

清浅
清浅original
2019-03-30 16:03:5641301parcourir

Les quatre niveaux d'isolation de la base de données sont : 1. Lire le contenu non validé ; 2. Lire le contenu soumis ; 3. Lisible ; 4. Sérialisable ; Les niveaux d'isolement sont implémentés à l'aide de différents types de verrous. Si les mêmes données sont lues, des problèmes tels que des lectures incorrectes et des lectures fantômes peuvent survenir.

Quels sont les quatre niveaux d’isolation des bases de données ?

L'environnement d'exploitation de cet article : système Windows 7, ordinateur Dell G3, mysql8.

Les quatre niveaux d'isolement de la base de données sont :

Read Uncommit (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. Ce niveau d'isolation est rarement utilisé dans les applications pratiques car ses performances ne sont guère meilleures que les autres niveaux. La lecture de données non validées est également appelée lecture sale.

Lecture validée

Il s'agit du niveau d'isolement par défaut pour 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. Ce niveau d'isolement prend également en charge ce que l'on appelle la lecture non répétable, car d'autres instances de la même transaction peuvent avoir de nouvelles validations pendant le traitement de l'instance, de sorte que la même sélection peut renvoyer des résultats différents.

Lecture répétable (relisible)

Il s'agit du niveau d'isolation des transactions par défaut de MySQL. Il garantit que plusieurs instances de la même transaction liront les données simultanément. ligne de données. Cependant, en théorie, cela entraînera un autre problème épineux : la lecture fantôme (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 les lignes de données dans la plage, il constatera qu'il y a de nouveaux " Fantôme " OK. . 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).

Sérialisable

Il s'agit du niveau d'isolement le plus élevé. Il résout le problème de lecture fantôme en forçant les transactions à être ordonnées afin qu'elles ne puissent pas entrer en conflit les unes avec les autres. 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.

Problèmes causés par les niveaux d'isolement

Ces quatre niveaux d'isolement sont implémentés en utilisant différents types de verrous. Si les mêmes données sont lues, cela se produit facilement. Par exemple :

Dirty Read :

Une transaction a mis à jour une donnée et une autre transaction a lu les mêmes données à ce moment-là, car pour une raison quelconque, si l'opération RollBack précédente est effectuée, les données lues par la transaction suivante seront incorrectes.

Lecture non répétable :

Les données sont incohérentes entre deux requêtes dans une transaction. Cela peut être dû à une insertion entre les deux requêtes. Une transaction met à jour l'original. données.

Lecture fantôme :

Le nombre d'éléments de données dans deux requêtes d'une transaction est incohérent. Par exemple, une transaction interroge plusieurs lignes de données, mais une autre transaction. a inséré plusieurs nouvelles colonnes de données à ce moment-là. Dans la requête ultérieure de la transaction précédente, il constatera qu'il existe plusieurs colonnes de données qu'il n'avait pas auparavant.

Dans MySQL, ces quatre niveaux d'isolement sont implémentés, et les problèmes qui peuvent survenir sont les suivants :

隔离级别 脏读 不可重复读
幻读
读未提交
读已提交 X
可重复读 X X
可串行化 X X X

Résumé : Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à tout le monde

[Cours recommandés : 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