Maison >base de données >SQL >Quels sont les niveaux d'isolation des transactions de la base de données ?
Dans les opérations de base de données, afin de garantir efficacement l'exactitude des données lues simultanément, le niveau d'isolation des transactions est proposé. Dans la spécification SQL standard, 4 niveaux d'isolement des transactions sont définis et différents niveaux d'isolement gèrent les transactions différemment. L'article suivant vous présentera le niveau d'isolation des transactions. J'espère qu'il vous sera utile.
Les bases de données générales incluent quatre niveaux d'isolement, et différents niveaux d'isolement gèrent les transactions différemment.
Lecture non autorisée
Également connue sous le nom de lecture non validée : les lectures incorrectes sont autorisées, mais les mises à jour perdues ne sont pas autorisées. Si une transaction a commencé à écrire des données, une autre transaction n'est pas autorisée à écrire en même temps, mais d'autres transactions sont autorisées à lire cette ligne de données. Ce niveau d'isolement peut être atteint grâce à un "verrouillage en écriture exclusif".
Lecture autorisée
Également connue sous le nom de lecture validée : les lectures non répétables sont autorisées, mais les lectures sales ne sont pas autorisées. La transaction qui lit les données permet aux autres transactions de continuer à accéder à la ligne de données, mais la transaction d'écriture non validée empêchera les autres transactions d'accéder à la ligne. Ceci peut être réalisé grâce au « verrouillage en lecture partagé instantané » et au « verrouillage en écriture exclusif ».
Lecture répétable
Les lectures non répétables et les lectures sales sont interdites, mais des données de lecture fantôme peuvent parfois se produire. Les transactions qui lisent des données désactiveront les transactions d'écriture (mais autoriseront les transactions de lecture), et les transactions d'écriture désactiveront toutes les autres transactions. Ceci peut être réalisé grâce au « verrouillage en lecture partagé » et au « verrouillage en écriture exclusif ».
Sérialisable
Fournit une isolation stricte des transactions. Cela nécessite que les transactions soient exécutées en série, et les transactions ne peuvent être exécutées que les unes après les autres et ne peuvent pas être exécutées simultanément. La sérialisation des transactions ne peut pas être réalisée uniquement via des « verrous au niveau des lignes ». D'autres mécanismes doivent être utilisés pour garantir que les données nouvellement insérées ne seront pas accessibles par la transaction qui vient d'exécuter l'opération de requête.
Plus le niveau d'isolement est élevé, plus les données peuvent être garanties complètes et cohérentes, mais plus l'impact sur les performances de simultanéité est grand. Pour la plupart des applications, vous pouvez donner la priorité à la définition du niveau d'isolement du système de base de données sur Lecture validée. Il peut éviter les lectures sales et offre de meilleures performances de concurrence. Bien que cela entraîne des problèmes de concurrence tels que des lectures non répétables, des lectures fantômes et des mises à jour perdues de type II, dans des situations individuelles où de tels problèmes peuvent survenir, ils peuvent être contrôlés par l'application à l'aide du verrouillage pessimiste ou du verrouillage optimiste.
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!