Ressource
Dans cette longue section dédiée aux transactions nous avons
- revue la notion d’atomicité en SQL et en JAVA avec l’instruction
setAutoCommit(true/false) - puis étudier en détail la notion d’isolation
Cette notion d’isolation nous a permis de comprendre comment on résout l’accès concurrent à la donnée
- tout d’abord les SGBD implémente des mécanismes de Two-Phase Locking et de MVCC
- mais, pour des raisons de performance nous ne souhaitons pas forcément les mettre en oeuvre complètement
- ainsi, plusieurs niveaux d’isolation sont définis autorisant certaines anomalies
Mais malgré ce mécanisme, il nous reste le problème des transaction logiques, où ACID n’est pas suffisant
- une solution naive (et fausse) de contrôler uniquement dans le code Java ne suffit pas
- nous devons soit implémenter une approche pessimiste, mais qui va provoquer des latences
- soit implémenter une approche optimiste qui consiste à détecter les conflits via
@version