Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Isolation | Acid
Quizzes & Challenges
Quizzes
Challenges
/
Optimisation SQL et Fonctionnalités de Requête

bookIsolation

Dans le contexte des bases de données, l’isolation fait référence à la capacité d’un système de gestion de bases de données à contrôler la visibilité des modifications effectuées par des transactions concurrentes. Elle garantit que les transactions fonctionnent de manière indépendante les unes des autres, évitant ainsi toute interférence et maintenant l’intégrité des données.

Il existe 4 niveaux d’isolation en SQL :

  • read uncommitted ;
  • read committed ;
  • repeatable read ;
  • serializable.

Read uncommitted

Il s’agit du niveau d’isolation le plus bas, où les transactions peuvent voir les modifications apportées par d’autres transactions même avant qu’elles ne soient validées. Ce niveau autorise les lectures sales (dirty reads), ce qui signifie qu’une transaction peut lire des données modifiées par une autre transaction mais pas encore validées.

Lectures sales

Mise en œuvre

Pour spécifier le niveau d’isolation d’une transaction, nous pouvons utiliser la commande suivante dans notre requête :

-- Start transaction
BEGIN;
-- Set the isolation level for the transaction
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

/* Transaction query */
COMMIT;
  • SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; : Cette instruction modifie le niveau d’isolation de la transaction en cours à « Read Uncommitted », permettant ainsi à la transaction de potentiellement lire des données modifiées par d’autres transactions non validées ;

  • cette commande doit être utilisée uniquement à l’intérieur du bloc de transaction ! Sinon, elle n’aura aucun effet et le niveau d’isolation par défaut sera utilisé.

Nous pouvons également vérifier le niveau d’isolation actuel à l’aide de la commande suivante :
SHOW TRANSACTION ISOLATION LEVEL;

Read committed

Le niveau d’isolation Read Committed garantit qu’une transaction ne voit que les données qui ont été validées par d’autres transactions.
Cela signifie que les modifications non validées effectuées par d’autres transactions ne sont pas visibles pour les transactions opérant sous Read Committed.
En conséquence, il empêche les lectures sales en permettant à une transaction de lire uniquement des données validées. Cependant, ce niveau d’isolation présente des problèmes de lectures non répétables.

Lectures non répétables

Le niveau d'isolation « Read committed » autorise les lectures non répétables car il verrouille l'opération de lecture sur les valeurs en cours de transactions non validées, mais ne verrouille pas l'opération d'écriture.
En conséquence, il est possible d'écrire de nouvelles données dans la ligne qui est actuellement lue par une autre transaction.

Mise à jour perdue

En raison de l'absence de verrouillage en écriture, il existe un autre problème avec le niveau d'isolation read committed : les mises à jour perdues.

Les mises à jour perdues se produisent lorsque deux transactions parallèles tentent de modifier la même ligne. En conséquence, la transaction validée en dernier écrase les valeurs validées par les autres transactions.

Mise en œuvre

Nous pouvons également spécifier ce niveau d'isolation à l'aide des commandes suivantes :

-- Start transaction
BEGIN;
-- Set the isolation level for the session
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

/* Transaction query */
COMMIT;

Il est important de noter que Read Committed est le niveau d'isolation par défaut pour la plupart des systèmes de gestion de base de données, c'est pourquoi il est possible de ne pas le spécifier.

question mark

Si une transaction lit des données qui ont été modifiées par une autre transaction non validée, quel type de lecture est-ce ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 6

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

Suggested prompts:

Can you explain the other isolation levels like Repeatable Read and Serializable?

What are the main differences between dirty reads, non-repeatable reads, and lost updates?

Can you provide examples of when to use each isolation level?

bookIsolation

Glissez pour afficher le menu

Dans le contexte des bases de données, l’isolation fait référence à la capacité d’un système de gestion de bases de données à contrôler la visibilité des modifications effectuées par des transactions concurrentes. Elle garantit que les transactions fonctionnent de manière indépendante les unes des autres, évitant ainsi toute interférence et maintenant l’intégrité des données.

Il existe 4 niveaux d’isolation en SQL :

  • read uncommitted ;
  • read committed ;
  • repeatable read ;
  • serializable.

Read uncommitted

Il s’agit du niveau d’isolation le plus bas, où les transactions peuvent voir les modifications apportées par d’autres transactions même avant qu’elles ne soient validées. Ce niveau autorise les lectures sales (dirty reads), ce qui signifie qu’une transaction peut lire des données modifiées par une autre transaction mais pas encore validées.

Lectures sales

Mise en œuvre

Pour spécifier le niveau d’isolation d’une transaction, nous pouvons utiliser la commande suivante dans notre requête :

-- Start transaction
BEGIN;
-- Set the isolation level for the transaction
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

/* Transaction query */
COMMIT;
  • SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; : Cette instruction modifie le niveau d’isolation de la transaction en cours à « Read Uncommitted », permettant ainsi à la transaction de potentiellement lire des données modifiées par d’autres transactions non validées ;

  • cette commande doit être utilisée uniquement à l’intérieur du bloc de transaction ! Sinon, elle n’aura aucun effet et le niveau d’isolation par défaut sera utilisé.

Nous pouvons également vérifier le niveau d’isolation actuel à l’aide de la commande suivante :
SHOW TRANSACTION ISOLATION LEVEL;

Read committed

Le niveau d’isolation Read Committed garantit qu’une transaction ne voit que les données qui ont été validées par d’autres transactions.
Cela signifie que les modifications non validées effectuées par d’autres transactions ne sont pas visibles pour les transactions opérant sous Read Committed.
En conséquence, il empêche les lectures sales en permettant à une transaction de lire uniquement des données validées. Cependant, ce niveau d’isolation présente des problèmes de lectures non répétables.

Lectures non répétables

Le niveau d'isolation « Read committed » autorise les lectures non répétables car il verrouille l'opération de lecture sur les valeurs en cours de transactions non validées, mais ne verrouille pas l'opération d'écriture.
En conséquence, il est possible d'écrire de nouvelles données dans la ligne qui est actuellement lue par une autre transaction.

Mise à jour perdue

En raison de l'absence de verrouillage en écriture, il existe un autre problème avec le niveau d'isolation read committed : les mises à jour perdues.

Les mises à jour perdues se produisent lorsque deux transactions parallèles tentent de modifier la même ligne. En conséquence, la transaction validée en dernier écrase les valeurs validées par les autres transactions.

Mise en œuvre

Nous pouvons également spécifier ce niveau d'isolation à l'aide des commandes suivantes :

-- Start transaction
BEGIN;
-- Set the isolation level for the session
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

/* Transaction query */
COMMIT;

Il est important de noter que Read Committed est le niveau d'isolation par défaut pour la plupart des systèmes de gestion de base de données, c'est pourquoi il est possible de ne pas le spécifier.

question mark

Si une transaction lit des données qui ont été modifiées par une autre transaction non validée, quel type de lecture est-ce ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 6
some-alt