Attention, votre navigateur ne supporte pas le javascript ou celui-ci a été désactivé. Certaines fonctionnalités dynamiques de ce module sont restreintes.
Regardez l'extrait vidéo et complétez le texte suivant.
Le premier problème c'est "la perte de mise à jour".
On va partir d'un principe, un nouveau principe, qu'il est important de bien comprendre. On étudie les problèmes de concurrence. Donc la base qui nous permet de savoir si c'est correct ou si ce n'est pas correct, c'est l'exécution série. Voici deux transactions. Si au départ A = 50, si je fais T1 + T2, je lis 50, en mémoire je passe à 60, j'écris sur le disque 60. Je lis 60, en mémoire je mets 80, j'écris sur le disque 80. T1 puis T2 me positionnent A à 80. Si je faisais T2 puis T1, je lis 50 plus 2, 70, j'écris 70, je lis 70 plus 1, 80 j'écris 80. T1 T2, c'est la même chose que T2 T1, dans ce cas-là. Ce n'est pas toujours vrai. D'une manière générale, les programmes ne sont pas commutatifs. On considérera qu'une exécution concurrente est bonne si elle donne le même résultat qu'une exécution série.
Je fais tourner mes deux programmes en concurrence. Le processeur va donc les mélanger. Je commence avec A = 50, comme avant. Je (le programme) lis A = 50, en mémoire 60. Lui, il lit 50, je n'ai pas encore écrit, lui, il écrit sur le disque 60, mais dans Y j'ai 50. Y = Y + 20, Y = 70. J'écris ma donnée sur le disque. A la fin de l'exécution concurrente de T1 et T2, sur le disque je devais avoir 80, j'ai perdu 10. J'étais dans un état cohérent au début, je ne le suis plus à la fin. Ces situations-là, vous les retrouvez dans n'importe quel site web. La solution, ce sont les systèmes transactionnels. Tous les sites de commerce électronique qui sont faits avec MySQL ancienne version n'étaient pas transactionnels.