Maison > base de données > tutoriel mysql > Comment puis-je éviter efficacement les blocages MySQL dans une table utilisateur en ligne ?

Comment puis-je éviter efficacement les blocages MySQL dans une table utilisateur en ligne ?

Mary-Kate Olsen
Libérer: 2024-12-27 05:29:13
original
133 Les gens l'ont consulté

How Can I Effectively Avoid MySQL Deadlocks in an Online User Table?

Éviter les blocages MySQL dans une table d'utilisateurs en ligne

L'apparition des erreurs « Deadlock trouvé lors de la tentative d'obtention du verrou ; essayez de redémarrer la transaction » peut être un problème frustrant. De tels blocages surviennent lorsque plusieurs transactions tentent d'acquérir des verrous sur des ressources dans un ordre contradictoire. Pour résoudre ce problème, envisagez les solutions suivantes :

Opérations de tri

Des blocages se produisent souvent en raison d'opérations qui tentent de verrouiller les clés dans des ordres différents. Établissez un ordre cohérent pour les clés de verrouillage en triant vos requêtes en conséquence. Par exemple, si vous avez plusieurs requêtes qui verrouillent à la fois la clé (1) et la clé (2), assurez-vous qu'elles obtiennent toujours les verrous dans le même ordre.

Commandez la requête DELETE

Votre requête DELETE doit également être modifiée pour fonctionner dans un ordre croissant. La requête optimisée suivante permettra d'y parvenir :

DELETE FROM onlineusers 
WHERE id IN (
    SELECT id FROM onlineusers
    WHERE datetime < NOW() - INTERVAL 900 SECOND 
    ORDER BY id
) u;
Copier après la connexion

Nouvelles tentatives automatiques des clients

La documentation MySQL recommande des tentatives automatiques des clients en cas de blocage. Implémentez cette logique dans votre code client, en définissant un nombre spécifique de tentatives (par exemple, 3) avant d'abandonner.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal