© Éditions Eyrolles
227
chapitre n° 6
Bases du langage de programmation
Transactions
Une transaction est un bloc d’instructions LMD faisant passer la base de données d’un état
cohérent à un autre état cohérent. Si un problème logiciel ou matériel survient au cours d’une
transaction, aucune des instructions contenues dans la transaction n’est effectuée, quel que
soit l’endroit de la transaction où est intervenue l’erreur.
On peut supposer que la majorité des transactions sous MySQL sont programmées dans le
langage du serveur. Les langages plus évolués permettent aussi de développer des transactions
à travers des API (par exemple la méthode commit est comprise dans le paquetage
java.sql).
L’exemple typique d’une transaction est celui du transfert d’un compte épargne vers un
compte courant. Imaginez qu’après une panne votre compte épargne a été débité de la somme
de 500 €, sans que votre compte courant soit crédité du même montant ! Vous ne seriez pas
très content des services de votre banque (à moins que l’erreur ne soit intervenue dans l’autre
sens). Le mécanisme transactionnel empêche un tel scénario en invalidant toutes les opérations faites depuis le début de la transaction, si une panne survient au cours de cette même
transaction.
Caractéristiques
Une transaction assure :
q
l’atomicité des instructions qui sont considérées comme une seule opération (principe du
tout ou rien) ;
q
la cohérence (passage d’un état cohérent de la base à un autre état cohérent) ;
q
l’isolation des transactions entre elles (lecture consistante, mécanisme décrit plus loin) ;
q
la durabilité des opérations (les mises à jour perdurent même si une panne se produit après
la transaction).
Figure 6-5 Transaction
TRANSFERT(500€)
Début Transaction
…
UPDATE Codevi( -500€)
UPDATE CompteCourant(+500€)
Fin Transaction
État cohérent
TEMPS
PANNE !
État cohérent
Précédent

- 249/418

Suivant