Solution de blocage MySQL : 1. Attendez l'expiration du délai (innodb_lock_wait_timeout=50s), annulez automatiquement la transaction ; 2. Lancez la détection de blocage, annulez activement une transaction et laissez les autres transactions continuer à s'exécuter ( innodb_deadlock_detect=on ).
MySQL dispose de deux méthodes de gestion des blocages :
● Attendre l'expiration du délai (innodb_lock_wait_timeout=50s), annuler automatiquement les transactions .
● Initier la détection des blocages, annuler de manière proactive une transaction et permettre aux autres transactions de continuer à s'exécuter (innodb_deadlock_detect=on).
Pour des raisons de performances, la détection des interblocages est généralement utilisée pour gérer les interblocages.
Détection des blocages
Le principe de la détection des blocages est de construire un graphe orienté avec des transactions comme sommets et des verrous comme arêtes, et de déterminer s'il existe un cycle dans le graphe orienté s'il y a un. cycle, il y a une impasse.
Rollback
Après avoir détecté un blocage, sélectionnez la transaction avec le plus petit nombre de lignes insérées, mises à jour ou supprimées à restaurer, en fonction du champ trx_weight de la table INFORMATION_SCHEMA.INNODB_TRX.
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!