Maison >base de données >tutoriel mysql >Comment puis-je éviter les erreurs de « blocage détecté lors de la tentative d'obtention d'un verrouillage » dans mon système de suivi des utilisateurs en ligne MySQL ?
Éviter « un blocage trouvé lors de la tentative d'obtention d'un verrouillage » dans MySQL
Problème :
Un développeur rencontre un message « Deadlock trouvé » par intermittence lorsqu'il tente d'obtenir un verrou ; essayez de redémarrer les erreurs de transaction lors de l'exécution d'INSERT dans une table InnoDB qui suit les activités des utilisateurs en ligne. Le tableau est mis à jour lors de l'actualisation de la page et effacé toutes les 15 minutes par une tâche cron.
Requêtes en question :
Solution :
Pour résoudre les blocages, il est crucial de garantir que les transactions verrouillent les clés dans un ordre cohérent. Voici les étapes recommandées :
Ordre des clés dans les requêtes :
Trier Supprimer Déclarations :
DELETE FROM onlineusers WHERE id IN ( SELECT id FROM onlineusers WHERE datetime <= now() - INTERVAL 900 SECOND ORDER BY id ) u;
Réessayer Mécanisme :
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!