Comment éviter les blocages dans MySQL
Les blocages sont un problème courant dans les systèmes de bases de données, qui peuvent entraîner des problèmes de performances importants. Dans MySQL, des blocages se produisent lorsque deux threads ou plus tentent de verrouiller les mêmes ressources dans des ordres opposés.
Comprendre les blocages
Analysons un scénario de blocage typique :
Si les deux connexions s'exécutent simultanément, une impasse se produit puisque les deux attendent l'un l'autre pour libérer les clés verrouillées.
Éviter Interblocages
Pour éviter les interblocages, il est crucial de garantir que les connexions verrouillent les clés dans le même ordre.
Réorganiser les requêtes
Exemple
Dans votre cas spécifique, l'instruction DELETE doit être modifiée comme suit :
DELETE FROM onlineusers WHERE id IN ( SELECT id FROM onlineusers WHERE datetime <= now() - INTERVAL 900 SECOND ORDER BY id ) u;
En utilisant cette approche de sous-requête, l'opération DELETE verrouillera les lignes dans l'ordre croissant de la colonne id, évitant ainsi les potentiels blocages.
Logique de nouvelle tentative côté client
Si des blocages surviennent toujours dans votre système, il est recommandé d'implémenter une logique de nouvelle tentative côté client. Cela implique que le client réessaye automatiquement l'opération plusieurs fois (par exemple, trois tentatives) en cas d'erreur de blocage.
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!