Les propriétés ACID
| Propriété | Garantit |
|---|---|
| Atomicité | tout ou rien |
| Cohérence | d'un état valide à un autre |
| Isolation | les transactions concurrentes n'interfèrent pas |
| Durabilité | une fois validée, ça survit à une panne |
Moteur InnoDB requis — les transactions n'existent qu'avec InnoDB (le défaut). L'ancien MyISAM ne les gère pas.
START, COMMIT, ROLLBACK
Exemple : clôturer une campagne et valider ses commandes doivent se faire ensemble, jamais l'un sans l'autre.
START TRANSACTION;
UPDATE campagne SET statut = 'CLOTUREE' WHERE id = 1;
UPDATE commande SET statut = 'VALIDEE' WHERE campagne_id = 1;
COMMIT; -- ou ROLLBACK; pour tout annuler
Niveaux d'isolation & verrous
| Niveau | Lecture sale | Non-répétable |
|---|---|---|
| READ UNCOMMITTED | possible | possible |
| READ COMMITTED | non | possible |
| REPEATABLE READ (défaut) | non | non |
| SERIALIZABLE | non | non |
Interblocage (deadlock) — deux transactions qui s'attendent mutuellement : MySQL en annule une. Parade : transactions courtes, accès aux tables dans le même ordre.
🛢️ Sur le projet Fioul Groupé
Quand plusieurs foyers s'inscrivent en même temps à la même campagne, le total de litres doit rester juste. Encadrer l'inscription (ajout de commande + recalcul du palier) dans une transaction garantit un volume cohérent, même sous forte concurrence à l'approche de la clôture.
À retenir
- ACID : atomicité, cohérence, isolation, durabilité (moteur InnoDB).
- START TRANSACTION … COMMIT / ROLLBACK : le « tout ou rien ».
- Le niveau d'isolation règle le compromis cohérence/performance.
- Transactions courtes + ordre d'accès constant limitent les deadlocks.