Bonjour,
Pourriez-vous m'expliquer ce que signifie et quelle est la différence entre:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
et
SET TRANSACTION ISOLATION LEVEL READ COMMITED;
Merci.
Bonjour,
Pourriez-vous m'expliquer ce que signifie et quelle est la différence entre:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
et
SET TRANSACTION ISOLATION LEVEL READ COMMITED;
Merci.
Personne pour soulager ma compréhension ?
1°) merci d'éviter les messages inutiles : http://club.developpez.com/regles/#L4.7
J'ajouterais que les membres du forum ne sont pas disponible à tout moment.
2°) venons en à la question... alors là, je découvre en même temps que toi http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a96590/adg08sql.htm#2755
D'après ce que je comprends :
En reprenant les exemples de ce sujet : Transaction Isolation Level
READ COMMITTED est le mode par défaut : si une session modifie les données, un COMMIT de cette session propage le résultat sur toutes les autres sessions :
le commit de la session 2 modifie bien la vision des données de la session 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Session 1 ========= set transaction isolation level read committed select * from a; (displayed 2 rows) Session 2 ========= delete from a; (2 rows deleted) commit session 1 ========= select * from a; (no rows selected) commit select * from a; (no rows selected)
SERIALIZABLE lui, permet de garantir la vision des données dans une transaction (donc jusqu'au prochain commit dans la session) quelque soit les opérations effectuées par les autres sessions :
ici, la session 1 a vu les lignes supprimées par session 2 tant que le commit n'a pas été lancé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Session 1 ========= Set transaction isolation level serializable; select * from a; (displayed 2 rows) Session 2 ========= delete from a; commit; Session 1 ========= select * from a; (displayed the 2 rows again) commit; select * from a; (no rows selected)
Merci de m'avoir fait découvrir cette fonctionnalité intéressante mais qui semble quand même poser quelques problèmes en particulier de lock et transaction fantomes
Merci beaucoup pour cette réponse !!!
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager