🛢️Parcours Fioul GroupéMySQL · Chapitre 11
Accueil › MySQL › Chapitre 11
Chapitre 11 / 16

Transactions et concurrence

Garantir qu'une série d'opérations se fasse « tout ou rien », et permettre à plusieurs utilisateurs de travailler en même temps sans corrompre les données.

1 Notion

Les propriétés ACID

PropriétéGarantit
Atomicitétout ou rien
Cohérenced'un état valide à un autre
Isolationles 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.
2 Notion

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
3 Notion

Niveaux d'isolation & verrous

NiveauLecture saleNon-répétable
READ UNCOMMITTEDpossiblepossible
READ COMMITTEDnonpossible
REPEATABLE READ (défaut)nonnon
SERIALIZABLEnonnon
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
← Chapitre 10