Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Isolation : Niveaux Repeatable Read et Serializable | Acid
Techniques Avancées en SQL

bookIsolation : Niveaux Repeatable Read et Serializable

Lecture répétable

Le niveau d'isolation Lecture répétable dans les bases de données garantit que lorsque vous démarrez une transaction, vous voyez un instantané de la base de données qui reste identique pendant toute la durée de votre opération.
Cela signifie que même si d'autres modifications interviennent dans la base de données pendant votre travail, vous ne verrez que les données telles qu'elles étaient au début.
Les transactions sous l'isolation Lecture répétable maintiennent des verrous de lecture sur toutes les lignes référencées et des verrous d'écriture sur les lignes insérées, modifiées ou supprimées. Cela prévient les mises à jour perdues, les lectures sales et 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 se produire lorsqu'une transaction lit des données et qu'une autre transaction ajoute de nouveaux enregistrements à la base de données. Par conséquent, il est possible d'obtenir des ensembles de résultats différents pour 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 entre deux 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 entre deux 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 de manière sérielle, 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;

question-icon

Associer les niveaux d'isolation à leurs descriptions.

Read Uncommitted:
Read Committed:

Repeatable Read:

Serializable:

Click or drag`n`drop items and fill in the blanks

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 7

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Awesome!

Completion rate improved to 4.35

bookIsolation : 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 que lorsque vous démarrez une transaction, vous voyez un instantané de la base de données qui reste identique pendant toute la durée de votre opération.
Cela signifie que même si d'autres modifications interviennent dans la base de données pendant votre travail, vous ne verrez que les données telles qu'elles étaient au début.
Les transactions sous l'isolation Lecture répétable maintiennent des verrous de lecture sur toutes les lignes référencées et des verrous d'écriture sur les lignes insérées, modifiées ou supprimées. Cela prévient les mises à jour perdues, les lectures sales et 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 se produire lorsqu'une transaction lit des données et qu'une autre transaction ajoute de nouveaux enregistrements à la base de données. Par conséquent, il est possible d'obtenir des ensembles de résultats différents pour 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 entre deux 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 entre deux 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 de manière sérielle, 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;

question-icon

Associer les niveaux d'isolation à leurs descriptions.

Read Uncommitted:
Read Committed:

Repeatable Read:

Serializable:

Click or drag`n`drop items and fill in the blanks

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 7
some-alt