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 !!!![]()
Partager