opération de suppression des verrous ensemble de la table en innodb
J'ai un problème avec verrouillage des tables en InnoDB sur l'opération de suppression.
J'ai une table de file d'attente avec, par exemple, une colonne et un grand nombre de transactions qui peuvent insérer des lignes dans cette file d'attente ou de les supprimer.
Il n'y a pas deux transactions de travail avec les mêmes lignes en même temps. Donc, tous les verrous de ligne doivent être distinctes.
Mais parfois, lors de l'opération de suppression supprime la plupart des lignes dans la table InnoDB préfère utiliser un verrou de table au lieu de verrou de ligne et qui provoque des blocages.
Je ne peux pas reproduire ce blocage exactement, mais j'ai trouvé que le problème de verrouillage.
c'est à dire que j'ai de la table de la file d'attente:id avec les valeurs(1,3,4,5,6,7)
De Transaction 1:
insert into queue value(2);
Transaction 2:
delete from queue where id in (1,3,4,5,6,7); -- here the lock comes
J'ai oublié une chose. J'ai fait une expérience. J'avais ajouté 200 ordures lignes dans cette table et de la table des verrous et les blocages disparu.
Vous avait raison. Ce n'était pas de verrou de table, c'était de l'écart de serrures.
étant donné le lien est cassé, u peut le mettre à jour?
Voici le nouveau lien dev.mysql.com/doc/refman/5.7/en/...
OriginalL'auteur Vadim Babaev | 2014-04-21
Vous devez vous connecter pour publier un commentaire.
Tout d'abord en supposant que l'id est une clé primaire ou au moins une colonne indexée.
Insert ne doit pas verrouiller la table, de sorte que les chances sont de toute autre mise à jour/suppression de requête est en cours d'exécution au même moment de la suppression des enregistrements.
Si ce n'est pas le cas, alors elle peut être due à "l'écart de verrouillage" comme mentionné @a_horse_with_no_name.
Donc au moment où vous obtenez à nouveau cette question, alors vous avez besoin pour stocker tous les processus "show full processlist" à la fin de votre et aussi la case "afficher le moteur innodb status" où il va vous montrer processids liées à l'impasse, cela vous aidera à obtenir exactement le problème.
En outre, Vous pouvez éviter ce blocage pour supprimer toutes les lignes une par une, basée sur la clé primaire.
ce serait un exemple de votre problème initial ressemble qui n'ont pas d'écart de verrouillage ici?
OriginalL'auteur Zafar Malik