111 votes

Lors de l'utilisation du verrouillage FOR UPDATE de MySQL, qu'est-ce qui est exactement verrouillé ?

Il ne s'agit pas d'un pseudo-code de requête MySQL complet/correct :

 Select *
 from Notifications as n
 where n.date > (CurrentDate-10 days)
 limit by 1
 FOR UPDATE

http://dev.mysql.com/doc/refman/5.0/en/select.html indique : Si vous utilisez FOR UPDATE avec un moteur de stockage qui utilise des verrous de page ou de ligne, les lignes examinées par la requête sont verrouillées en écriture jusqu'à la fin de la transaction en cours

Y a-t-il ici un seul enregistrement renvoyé verrouillé par MySQL ou tous les enregistrements qu'il doit analyser pour trouver l'enregistrement unique ?

13voto

El Yobo Points 7580

Suivre les liens de la page de documentation que vous avez publiée donne plus d'informations sur le verrouillage . Dans cette page

A SELECT ... FOR UPDATE lit les dernières données disponibles, définissant des verrous exclusifs sur chaque ligne qu'il lit. Ainsi, il définit les mêmes verrous qu'une MISE À JOUR SQL recherchée définirait sur les lignes.

Cela semble assez clair que ce sont toutes les lignes qu'il doit analyser.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X