OVH Cloud OVH Cloud

Commit et Rollback concurrents

1 réponse
Avatar
John S.
Bonjour,

J'ai un problème métaphysique que je voudrais vous soumettre. Je possède un
formulaire d'inscription qui réalise des tas d'insert dans une base mysql.

Afin de prévenir tout soucis, je désactive l'autocomit en entrée de fonction
(php), et réalise un commit à la fin, ou un rollback en cas d'erreur.

A présent, imaginons que j'ai deux utilisateurs qui utilisent le même
formulaire au même moment, mais l'un clique plus vite que l'autre. Soit :


UTILISATEUR 1 UTILISATEUR 2
============ ============
CLICK

autocommit = OFF

insert 1



insert 2


CLICK

insert 3


insert A

insert 4


rollback


commit


autocommit =
ON

autocommit = ON



Question : Qu'est-ce qui est commité et qu'est-ce qui ne l'est pas ?...

Merci pour votre aide
:-)

1 réponse

Avatar
Fred BROUARD - SQLpro
John S. a écrit:
Bonjour,

J'ai lu ton article avec un très grand intérêt, au point de l'avoir gardé
sous la main pour y revenir de temps en temps. Vraiment très intéressant, et
très bien expliqué.

Toutefois, je n'y ai pas trouvé de réponse traitant du problème précis que
j'évoque. Je crois comprendre dans ta réponse qu'il n'y a pas de solution,
et que tout ordre passé au serveur est séquentialisé, sans préocupation du
fait que l'ordre provienne de la transaction 1 ou de la transaction 2.

En gros, si j'ai bien compris, un ROLLBACK émis par la transaction 2
annulera toutes les modifications effectuées par la transaction 1 (qui n'a
pas encore fait son commit).



non...

Un rollback de T1 annule T1, pas T2

T1 ne voit pas T2, c'est cela l'isolation

A +

Est-ce bien cela ? Si oui, je m'en étonne, le cas que je cite n'étant pas un
cas d'espèce...


Cordialement.



"Fred BROUARD - SQLpro" a écrit dans le message
de news: 3f601a13$0$20951$

A partir du moment ou il y a transaction, c'est à dire :
debut de la transaction
puis soit COMMIT soit ROLLBACK
tu peut considérer que chaque transaction sera jouée comme si le
processeur était devenu mono tache et la transaction atomique.

Cependant, il convient de considérer aussi le niveau d'isolation des
transactions.

A lire :
http://sqlpro.developpez.com/TECH/SQL_TEHC.html#TECH01








--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************