Le blocage MySQL fait référence à deux transactions ou plus s'occupant mutuellement sur la même ressource et demandant de verrouiller les ressources occupées les unes par les autres, ce qui entraîne un cercle vicieux. Le moteur de stockage InnoDB peut détecter les dépendances circulaires de blocage et renvoyer immédiatement une erreur. Une impasse ne peut être résolue qu'en annulant partiellement ou complètement l'une des transactions.
Qu'est-ce qu'une impasse ? Comment est-ce arrivé ?
L'impasse fait référence à deux transactions ou plus s'occupant mutuellement sur la même ressource et demandant de verrouiller les ressources occupées les unes par les autres, ce qui entraîne un cercle vicieux.
(Tutoriel recommandé : Tutoriel mysql )
Un blocage peut se produire lorsqu'une transaction tente de verrouiller des ressources dans un ordre différent. Un blocage peut également se produire lorsque plusieurs transactions verrouillent la même ressource en même temps.
Le comportement et l'ordre des verrous sont liés au moteur de stockage. En exécutant les instructions dans le même ordre, certains moteurs de stockage se bloqueront et d'autres non. La cause du blocage est double : un véritable conflit de données et la manière dont le moteur de stockage est implémenté.
Détection des blocages
Le système de base de données implémente divers mécanismes de détection des blocages et de délai d'expiration des blocages. Le moteur de stockage InnoDB peut détecter les dépendances circulaires de blocage et renvoyer une erreur immédiatement.
Récupération d'une impasse
Une fois qu'une impasse se produit, celle-ci ne peut être levée qu'en annulant partiellement ou complètement l'une des transactions.
La manière actuelle dont InnoDB gère les blocages consiste à annuler la transaction détenant le verrou exclusif le moins élevé au niveau de la ligne. Par conséquent, les applications transactionnelles doivent réfléchir à la manière de gérer les blocages lors de leur conception. Dans la plupart des cas, seules les transactions annulées en raison de blocages doivent être réexécutées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!