Résoudre les incohérences dans les récupérations MySQL après des opérations de suppression-insertion
La rencontre de données obsolètes après une opération de suppression et d'insertion dans MySQL est un problème courant pour applications multithread. Pour comprendre ce comportement, examinons les principes sous-jacents.
Niveau d'isolement MySQL : le coupable
Par défaut, MySQL fonctionne avec le niveau d'isolement "REPEATABLE READ". Ce paramètre garantit qu'une transaction ne sera pas affectée par des modifications ultérieures de la base de données, que les modifications aient été apportées au sein ou au-delà de la transaction.
Dans le cadre de votre problème, après avoir supprimé les anciennes sessions et Si vous en créez de nouvelles, les connexions ouvertes desservant d'autres threads peuvent toujours voir les sessions obsolètes car leurs transactions ont été initiées avant ces modifications. Même si d'autres connexions valident ou annulent leurs transactions, elles peuvent ne pas observer les données mises à jour en raison du niveau d'isolement « REPEATABLE READ ».
Solution : modifier le niveau d'isolement ou valider des transactions
Pour résoudre ce problème de mise en cache, vous disposez de deux options principales :
Considérations supplémentaires sur la mise en cache
Outre le niveau d'isolement de MySQL, d'autres facteurs pourraient contribuer aux comportements de mise en cache :
En abordant le niveau d'isolation MySQL et en prenant en compte d'autres facteurs de mise en cache, vous pouvez résoudre les incohérences dans la récupération des données et garantir une gestion précise des mises à jour de la base de données. dans votre candidature.
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!