70 likes | 196 Views
Systèmes de gestion de bases de données NFP 107 Introduction à la concurrence d’accès Troisième fragment Philippe Rigaux philippe.rigaux@cnam.fr. http://idf.pleiad.net/index.php. Les niveaux d’isolation en détail. Le niveau READ UNCOMMITTED
E N D
Systèmes de gestion de bases de donnéesNFP 107Introduction à la concurrence d’accèsTroisième fragmentPhilippe Rigauxphilippe.rigaux@cnam.fr http://idf.pleiad.net/index.php
Les niveaux d’isolation en détail • Le niveau READ UNCOMMITTED • On peut lire des données en cours de modification par d’autres transactions • Principal inconvénient: on a une vision d’un état incohérent (car transitoire) de la base • Principal avantage: aucun blocage • Démonstration….
Les niveaux d’isolation en détail (2) • Le niveau READ COMMITTED • Une requête ne peut lire que des données déjà validées. • Deux requêtes consécutives peuvent donner des résultats différents • Principal inconvénient: isolation faible, on voit, au cours d’une même transaction, différents états de la base. • Principal avantage: blocage assez faible, évite les principaux problèmes • Démonstration….
Les niveaux d’isolation en détail (3) • Le niveau REPEATABLE READ • Les requêtes d’une transaction T ne lisent que les données validées au début de T • Deux lectures consécutives (dans une même transaction) donnent toujours le même résultat. • Principal avantage: on voit un état cohérent de la base. • Principal inconvénient: assez coûteux; n’évite pas les mises à jour perdues • Démonstration….
Le mode sérialisable • Garantie d’une isolation complète • Les lectures sont répétables • La cohérence est garantie • Indispensable pour les procédures transactionnelles • Inconvénient majeur • Des blocages importants • Parfois rejet d’une transaction en cas de conflit • Démonstration….
La clause FOR UPDATE • Idée: le problème vient du fait qu’on lit une donnée pour la modifier ensuite. • Le système ne peut pas le deviner! • Il est obligé de tracer toutes les lectures (coût élevé) • Il pose des verrous faibles -> mène à un rejet quand les choses tournent mal • FOR UPDATE • Le programmeur déclare qu’une lecture va être suivie d’une mise à jour • Le système pose un verrou fort pour celles-là, pas de verrou pour les autres
Conclusion • Savoir repérer les transactions dans une application. • Dans ce cas, appliquer le mode sérialisable • La clause FOR UPDATE est en théorie meilleure, mais repose sur le facteur humain: probablement à éviter. • Savoir qu’en mode sérialisable on risque des rejets. • Comprendre les risques dans les autres modes.