Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Isolement. Niveaux de Lecture Répétable et Sérialisable | Acid
Techniques Avancées en SQL
course content

Contenu du cours

Techniques Avancées en SQL

Techniques Avancées en SQL

1. Acid
2. Optimisation des Requêtes.Indexes
3. Quelques Sujets Supplémentaires

book
Isolement. Niveaux de Lecture Répétable et Sérialisable

Lecture Répétable

Le niveau d'isolation Lecture Répétable dans les bases de données garantit que lorsque vous commencez une transaction, vous voyez un instantané de la base de données qui reste le même tout au long de votre tâche.
Cela signifie que même si d'autres modifications se produisent dans la base de données pendant que vous travaillez, vous ne verrez que les données telles qu'elles étaient lorsque vous avez commencé.
Les transactions sous l'isolation Lecture Répétable maintiennent des verrous de lecture sur toutes les lignes qu'elles référencent et des verrous d'écriture sur les lignes qu'elles insèrent, mettent à jour ou suppriment. Cela empêche les mises à jour perdues, les lectures sales et non répétables.
Cependant, il y a un problème qui se produit encore lors de l'utilisation de 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, nous pouvons obtenir des ensembles de résultats différents pour deux transactions de lecture consécutives.

Lecture non répétable vs lecture fantôme

Une lecture non répétable se produit lorsque la même requête exécutée par l'utilisateur A renvoie des valeurs différentes pour la même ligne entre des lectures consécutives, généralement en raison de modifications par l'utilisateur B.

La lecture fantôme, en revanche, se produit lorsque la même requête exécutée par l'utilisateur A renvoie différents ensembles de lignes entre des lectures consécutives, même si les lignes individuelles elles-mêmes n'ont pas été mises à jour.

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 le plus élevé d'isolation 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 le même que si elles étaient exécutées dans un certain ordre sériel, maintenant la cohérence et prévenant toutes les anomalies de concurrence découvertes.

Remarque

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'isolement dans notre requête SQL :
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

question-icon

Associez les niveaux d'isolement à 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
We're sorry to hear that something went wrong. What happened?
some-alt