Isolation : Niveaux Repeatable Read et Serializable
Lecture répétable
Le niveau d'isolation Lecture répétable dans les bases de données garantit qu'au début d'une transaction, un instantané de la base de données est visible et reste identique pendant toute la durée de l'opération.
Cela signifie que, même si d'autres modifications interviennent dans la base de données pendant le traitement, seules les données telles qu'elles étaient au début seront visibles.
Les transactions sous isolation Lecture répétable maintiennent des verrous de lecture sur toutes les lignes consultées et des verrous d'écriture sur les lignes insérées, modifiées ou supprimées. Cela empêche les mises à jour perdues, les lectures sales et les lectures non répétables.
Cependant, un problème subsiste avec ce type d'isolation : la lecture fantôme.
Lecture fantôme
La lecture fantôme peut survenir lorsqu'une transaction lit des données pendant qu'une autre transaction ajoute de nouveaux enregistrements dans la base de données. Par conséquent, il est possible d'obtenir des ensembles de résultats différents lors de deux lectures consécutives.
Lecture non répétable vs lecture fantôme
La lecture non répétable se produit lorsqu'une même requête exécutée par l'utilisateur A retourne des valeurs différentes pour la même ligne lors de lectures consécutives, généralement en raison de modifications effectuées par l'utilisateur B.
La lecture fantôme, en revanche, survient lorsqu'une même requête exécutée par l'utilisateur A retourne des ensembles de lignes différents lors de lectures consécutives, même si les lignes individuelles n'ont pas été modifiées.
Nous pouvons spécifier ce niveau d'isolation dans notre requête SQL en utilisant la commande suivante :
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
Serializable
Le niveau d'isolation Serializable est le niveau d'isolation le plus élevé dans les bases de données, garantissant la forme la plus stricte de contrôle de la concurrence.
À ce niveau, les transactions sont exécutées comme si elles étaient traitées en série, l'une après l'autre, même si elles peuvent en réalité être exécutées simultanément. Cela garantit que le résultat des transactions est identique à celui obtenu si elles étaient exécutées dans un certain ordre sériel, maintenant la cohérence et empêchant toutes les anomalies de concurrence découvertes.
Note
L'utilisation de ce type d'isolation peut entraîner une diminution des performances en raison de l'augmentation du verrouillage.
Nous pouvons utiliser l'instruction suivante pour définir ce niveau d'isolation dans notre requête SQL :
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
What is the difference between phantom read and non-repeatable read?
Can you give more examples of phantom reads?
How does the Serializable isolation level prevent phantom reads?
Awesome!
Completion rate improved to 4.55
Isolation : Niveaux Repeatable Read et Serializable
Glissez pour afficher le menu
Lecture répétable
Le niveau d'isolation Lecture répétable dans les bases de données garantit qu'au début d'une transaction, un instantané de la base de données est visible et reste identique pendant toute la durée de l'opération.
Cela signifie que, même si d'autres modifications interviennent dans la base de données pendant le traitement, seules les données telles qu'elles étaient au début seront visibles.
Les transactions sous isolation Lecture répétable maintiennent des verrous de lecture sur toutes les lignes consultées et des verrous d'écriture sur les lignes insérées, modifiées ou supprimées. Cela empêche les mises à jour perdues, les lectures sales et les lectures non répétables.
Cependant, un problème subsiste avec ce type d'isolation : la lecture fantôme.
Lecture fantôme
La lecture fantôme peut survenir lorsqu'une transaction lit des données pendant qu'une autre transaction ajoute de nouveaux enregistrements dans la base de données. Par conséquent, il est possible d'obtenir des ensembles de résultats différents lors de deux lectures consécutives.
Lecture non répétable vs lecture fantôme
La lecture non répétable se produit lorsqu'une même requête exécutée par l'utilisateur A retourne des valeurs différentes pour la même ligne lors de lectures consécutives, généralement en raison de modifications effectuées par l'utilisateur B.
La lecture fantôme, en revanche, survient lorsqu'une même requête exécutée par l'utilisateur A retourne des ensembles de lignes différents lors de lectures consécutives, même si les lignes individuelles n'ont pas été modifiées.
Nous pouvons spécifier ce niveau d'isolation dans notre requête SQL en utilisant la commande suivante :
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
Serializable
Le niveau d'isolation Serializable est le niveau d'isolation le plus élevé dans les bases de données, garantissant la forme la plus stricte de contrôle de la concurrence.
À ce niveau, les transactions sont exécutées comme si elles étaient traitées en série, l'une après l'autre, même si elles peuvent en réalité être exécutées simultanément. Cela garantit que le résultat des transactions est identique à celui obtenu si elles étaient exécutées dans un certain ordre sériel, maintenant la cohérence et empêchant toutes les anomalies de concurrence découvertes.
Note
L'utilisation de ce type d'isolation peut entraîner une diminution des performances en raison de l'augmentation du verrouillage.
Nous pouvons utiliser l'instruction suivante pour définir ce niveau d'isolation dans notre requête SQL :
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Merci pour vos commentaires !