Les différents niveaux
REPEATABLE READ
Il s'agit du niveau par défaut, celui avec lequel vous travaillez depuis le début. Repeatable read signifie "lecture répétable",
c'est-à-dire que si l'on fait plusieurs requêtes de sélection (non-verrouillantes) de suite, elles donneront toujours le même
résultat, quels que soient les changements effectués par d'autres sessions.
Si l'on pense à bien utiliser les verrous là où c'est nécessaire, c'est un niveau d'isolation tout à fait suffisant.
READ COMMITTED
Avec ce niveau d'isolation, chaque requête SELECT (non-verrouillante) va reprendre une "photo" à jour de la base de données,
même si plusieurs SELECT se font dans la même transaction. Ainsi, un SELECT verra toujours les derniers changements
commités, même s'ils ont été faits dans une autre session, après le début de la transaction.
READ UNCOMMITTED
Le niveau READ UNCOMMITTED fonctionne comme READ COMMITTED, si ce n'est qu'il autorise la "lecture sale". C'est-à-dire
qu'une session sera capable de lire des changements encore non commités par d'autres sessions.
Exemple
Session 1 :
Code : SQL
START TRANSACTION;
UPDATE Race
SET prix = 0
WHERE id = 7;
Session 2 :
Code : SQL
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
START TRANSACTION;
SELECT id, nom, espece_id, prix FROM Race;
id
nom
espece_id prix
1 Berger allemand
1
485.00
2 Berger blanc suisse 1
935.00
3 Singapura
2
985.00
4 Bleu russe
2
835.00
5 Maine coon
2
735.00
7 Sphynx
2
0.00
8 Nebelung
2
985.00
9 Rottweiller
1
600.00
La modification faite par la session 1 n'a pas été commitée. Elle ne sera donc potentiellement jamais validée, auquel cas, elle
n'affectera jamais les données.
Pourtant, la session 2 voit ce changement de données non-commitées. "Lecture sale" n'a pas une connotation négative par
Partie 5 : Sécuriser et automatiser ses actions
253/414
www.openclassrooms.com
Précédent

- 253/413

Suivant