2012-08-29 4 views
1

Selon la documentation MySQL, si une session contient un verrou de lecture pour une table, alors une autre session demande un verrou en écriture pour la même table, le verrou d'écriture doit être donné et le Read verrouiller les attentes.Verrouillage en écriture pour MySQL doit mettre en pause un verrou de lecture

Je l'ai essayé, connecté au serveur MySQL à partir de deux consoles (Windows 7). Verrouillé la table A de la première console (verrou de lecture), puis essayé de verrouiller la même table de la deuxième console (verrou en écriture), mais la deuxième console attend juste jusqu'à ce que le premier verrou libère.

Qui a tort: ​​moi ou la documentation? (MySQL Server version 5.5.27)

La citation de la documentation officielle MySQL:

« verrous d'écriture a une plus grande priorité aux verrous READ pour assurer les mises à jour sont traitées le plus rapidement possible ce moyen. que si une session obtient un verrou READ et qu'une autre session demande un verrou WRITE , les demandes de verrous READ suivantes attendent que la session demandée le verrou WRITE obtienne le verrou et le libère. "

+0

La réponse est dans le document, le verrou en écriture aura la priorité sur les verrous de lecture SUBSEQUENT ... – whosrdaddy

Répondre

0

Il est écrit là:

Cela signifie que si une session obtient un verrou READ et une autre session demande un verrou WRITE, suite demandes de verrou de lecture attendre la session qui a demandé le verrou d'écriture a obtenu le verrou et l'a libéré.

Les verrous READ déjà obtenus ne seront pas brisés en cours de fonctionnement. Cela causerait des ravages. C'est le demandes suivantes qui attendent.

+0

Vous l'avez, merci. – Graduate

0

Le mot clé est ultérieure dans subsequent READ lock requests. Je pense que cela signifie que les verrous READ existants ne seront pas mis en pause, mais que les verrous READ qui se produisent pendant qu'un verrou WRITE est activé seront différés. Donc je pense que les docs ont raison.

Questions connexes