InnoDB
détecte automatiquement les blocages
de transactions et annule une ou plusieurs transactions pour
l'éviter. Depuis la version 4.0.5, InnoDB
va
essayer d'annuler les petites transactions. La taille de la
transaction est déterminée par le nombre de lignes qu'elle a
inséré, modifié ou effacé. Avant la version 4.0.5,
InnoDB
annulait toujours la transaction qui
avait posé le dernier verrou avant le blocage, c'est à dire,
un cycle dans le graphe des transactions.
InnoDB
ne peut pas détecter les blocages
causés par la commande MySQL LOCK TABLES
, ou
si un verrou est posé par un autre gestionnaire de table que
InnoDB
. Vous devez résoudre ces situations
avec l'option innodb_lock_wait_timeout
du
fichier de configuration.
Lorsque InnoDB
effectue une annulation de
transaction, tous les verrous de cette transaction sont
libérés. Cependant, si une commande SQL est annulée pour
cause d'erreur, certains verrous de la transaction peuvent être
conservés. Deci est dû au fait que InnoDB
enregistre les verrous dans un format qui ne permet pas de
savoir qui l'a posé.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.