Gestion des verrous

Accueil

 Présentation de MySQL

 Technologie InnoDB

 MySQL:atouts & limites

 Benchmarks

 Liens utiles

 

 

 

La gestion de verrous :

Deuxième grand apport de la technologie InnoDB, la gestion de verrou.
Nous expliquerons ici en quoi consiste exactement cette gestion de verrous, et en quoi cela accroît la vitesse d'exécution des requêtes soumises à une base MySQL dans le cas d'accès concurrentiels.

Soit une table d'une base MySQL contenant une valeur entière : 10

  C1   C2   C3

   ..    ..     ..
   ..    ..    10
   ..    ..     ..
 

Imaginons qu'un utilisateur A décide de modifier ce champs, et qu'un autre utilisateur B, demande l'affichage de cette valeur en même temps (éventuellement pour modification).

L'utilisateur A débute alors une transaction et pose un verrou d'écriture sur cette valeur. Ainsi personne ne pourra modifier cette valeur tant que l'utilisateur n'a pas valider ou annuler sa transaction.
L'utilisateur modifie alors ce champs et fait passer la valeur a 12 pendant sa transaction.
S'il demande l'affichage de cette valeur, la modification est visible pour lui, MySQL lui répondra :"12".

Cependant, au même moment, l'utilisateur B demande l'affichage de la même valeur, MySQL lui donne la précédente valeur :"10", car l'utilisateur A n'a pas encore validé sa transaction.
De plus si l'utilisateur B cherche à modifier cette valeur, il reçoit un message d'erreur car l'utilisateur A a poser un verrou d'écriture pendant sa transaction.

L'utilisateur A valide sa transaction par l'ordre SQL COMMIT : sa modification est désormais visible par tout les utilisateurs.
Ces derniers peuvent maintenant poser à leurs tours un verrou sur cette donnée.
Cet utilisateur peut aussi annuler sa transaction à l'aide de l'ordre SQL ROLLBACK.