Transactions ACID et contrôle de concurrence
Informatique de gestion · Master 1
Propriétés ACID, niveaux d'isolation, verrouillage, interblocage et journalisation des transactions.
Introduction
Une transaction est une suite d'opérations sur une base de données traitée comme une unité logique de travail : elle réussit entièrement (COMMIT) ou est annulée entièrement (ROLLBACK). Un virement bancaire de 500 CHF d'un compte à un autre illustre le besoin : le débit et le crédit doivent réussir ensemble ou pas du tout.
Les propriétés ACID définissent la fiabilité attendue : Atomicité (tout ou rien), Cohérence (la base passe d'un état valide à un autre état valide), Isolation (les transactions concurrentes ne se perturbent pas) et Durabilité (un COMMIT survit à une panne). Sans isolation suffisante apparaissent des anomalies : lecture sale, lecture non reproductible, lecture fantôme, mise à jour perdue.
Le SQL standard définit quatre niveaux d'isolation (READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE) qui échangent protection contre performance. Les SGBD mettent en œuvre ces garanties par des verrous ou par un contrôle multiversion (MVCC), et par un journal de transactions pour la reprise après panne. Les verrous peuvent mener à un interblocage (deadlock), détecté et résolu par l'abandon d'une victime.
Objectifs d'apprentissage
- Expliquer chacune des quatre propriétés ACID avec un exemple
- Identifier les anomalies de concurrence dans un scénario
- Choisir un niveau d'isolation adapté à un besoin
- Décrire le verrouillage, l'interblocage et le MVCC
- Expliquer le rôle du journal de transactions
Concepts clés
- Atomicité et durabilité
- Atomicité : une transaction est appliquée entièrement ou pas du tout. Durabilité : après COMMIT, les modifications survivent à une panne grâce au journal.
- Cohérence et isolation
- La cohérence maintient les contraintes d'intégrité ; l'isolation donne à chaque transaction l'impression d'être seule, au degré défini par le niveau d'isolation.
- Anomalies de concurrence
- Lecture sale (donnée non validée), lecture non reproductible (valeur modifiée entre deux lectures), lecture fantôme (nouvelles lignes), mise à jour perdue.
- Niveaux d'isolation
- READ UNCOMMITTED < READ COMMITTED < REPEATABLE READ < SERIALIZABLE : plus le niveau est élevé, plus les anomalies sont évitées et plus la concurrence diminue.
- Verrous, MVCC et interblocage
- Les verrous partagés/exclusifs sérialisent les accès ; le MVCC fait lire des versions cohérentes sans bloquer. Deux transactions s'attendant mutuellement provoquent un interblocage.
Conclusion
Les transactions ACID permettent de construire des applications fiables où l'argent, les stocks et les contrats restent cohérents malgré la concurrence et les pannes. Le choix du niveau d'isolation est un arbitrage entre exactitude et performance.
Les bases NoSQL assouplissent parfois ces garanties (cohérence à terme) ; savoir ce que l'on perd est essentiel pour concevoir une architecture adaptée.
Cartes
- Que signifie ACID ?
- Atomicité, Cohérence, Isolation, Durabilité.
- Qu'est-ce que l'atomicité ?
- Une transaction est exécutée en totalité ou pas du tout ; en cas d'échec, tout est annulé (ROLLBACK).
- Qu'est-ce qu'une lecture sale (dirty read) ?
- Lire une donnée modifiée par une autre transaction qui n'est pas encore validée et pourrait être annulée.
- Qu'est-ce qu'une lecture non reproductible ?
- Relire une même ligne dans une transaction et obtenir une valeur différente car une autre transaction l'a modifiée et validée entre-temps.
- Qu'est-ce qu'une lecture fantôme ?
- Rejouer une même requête dans une transaction et voir apparaître de nouvelles lignes insérées par une autre transaction validée.
- Qu'est-ce qu'une mise à jour perdue ?
- Deux transactions lisent la même valeur puis la modifient : l'écriture de l'une écrase celle de l'autre.
- Quel niveau d'isolation est le plus strict ?
- SERIALIZABLE : le résultat équivaut à une exécution séquentielle des transactions.
- Qu'est-ce qu'un interblocage (deadlock) ?
- Deux transactions ou plus se bloquent mutuellement car chacune attend un verrou détenu par l'autre ; le SGBD en annule une.
- Quel est le principe du MVCC ?
- Maintenir plusieurs versions des données pour que les lectures voient un instantané cohérent sans bloquer les écritures.
- À quoi sert le journal de transactions (WAL) ?
- À enregistrer les modifications avant leur application pour permettre d'annuler ou de rejouer des transactions après une panne.
Glossaire
- Transaction
- Unité logique de travail regroupant des opérations qui réussissent ou échouent ensemble.
- COMMIT
- Validation définitive des modifications d'une transaction.
- Niveau d'isolation
- Degré de protection d'une transaction contre les effets des transactions concurrentes.
- Verrou
- Mécanisme qui restreint l'accès concurrent à une donnée.
- Interblocage
- Situation où des transactions s'attendent circulairement.
- Journal de transactions
- Fichier séquentiel des modifications servant à la reprise après panne.