Ca existe la notion de transaction en Mysql ?

WRInaute accro
Bon Mysql c'est Rank0.5 donc faut me causer avec des mots simples :wink:

Question : est ce que la notion de transaction (ou controll on/off dans d'autres langages) existe en Mysql.

Z'explique : J'ai une serie d'opérations à faire (par exemple modifier 3 fiches) et je ne veux pas qu'un autre utilisateur intervienne durant le laps de temps ou je bosse sur ces 3 fiches, me semant un joyeux boxon ... Bien evidemment, le travail "dans transaction" sur ces 3 fiches est limité au strict minimum (tout ets préparé en amont) et donc ca durera un pouieme de pouieme de seconde mais le risque existe quand même ... surtout si 3 devient 6 10 ou 20 ...

Donc y a t il une commande mysql pour lui dire :

MODE la tu bosse que pour moi
action1
action2
action 3
MODE je refile la ressource aux copains

Bref je veux avoir l'assurance que mes 3 actions se feront à la suite sans qu'une autre action soit executée par un autre user ...

PS : Mes 3 actions ne concernent qu'un table et donc je peux limiter mon mode "tout pour moi" à la table concernée ... Ca existe ce genre biniou en Mysql ?
 
WRInaute accro
UsagiYojimbo a dit:
Euh... c'est en français Zecat :lol:
c'est quoi ce bins ? :mrgreen: Tu as édité ton lien ? Tout à l'heure je suis arrivé sur unepage en british :roll: ou alors j'ai fumé une très très mauvaise qualité :mrgreen:

EDit : explication ... en fait tout a l'heure, j'étais a la bourre (on m'appelait) et du coup j'ai juste jeté un oeil sur le titre et vu surement en diagonal l exemple en anglais puis j'ai fermé la page ... :roll: :roll:
 
WRInaute impliqué
Zecat a dit:
Bref je veux avoir l'assurance que mes 3 actions se feront à la suite sans qu'une autre action soit executée par un autre user ...
Dons, faut aussi gérer un cache temporaire si ces users peuvent enregistrer des données dans tes tables.
Parce que si tu lock les table lorsqu'un select arrive, c'est pas bien grave. Si c'est un insert, le user risque de faire la tronche en voyant que ce qu'il a fait est perdu.
 
WRInaute impliqué
Dolph a dit:
Zecat a dit:
Bref je veux avoir l'assurance que mes 3 actions se feront à la suite sans qu'une autre action soit executée par un autre user ...
Dons, faut aussi gérer un cache temporaire si ces users peuvent enregistrer des données dans tes tables.
Parce que si tu lock les table lorsqu'un select arrive, c'est pas bien grave. Si c'est un insert, le user risque de faire la tronche en voyant que ce qu'il a fait est perdu.

Pas du tout.
Un lock met en attente les autres requêtes mais ne les annule certainement pas, ce serait débile.

Le risque est de se retrouver avec un blocage trop long. Si les users attendent tous derrière …
 
WRInaute accro
Oui c'est le principe meme des transactions ... telle que je les ai pratiquées depuis des années :wink:

1 - ca verrouille le temps de finir un lot de travail
2 - ca accélère puisque dans ce contexte le systeme fait l impasse sur des vérif inutiles (puisque justement en transaction)
3 - Faut optimiser pour ne laisser "en transaction" que le minimum syndical en préparant avant tout ce qui peut l'etre
4 - faut pas en abuser sinon le coté "j'acélère" est annulé par le coté "je crée des blocages en file d'attente (de type FIFO)"

Voila ma lecture de la chose :wink:
 
Discussions similaires
Haut