Mysql
 sql >> Base de données >  >> RDS >> Mysql

Qu'est-ce qui pourrait amener mysql db read à renvoyer des données obsolètes

Il semble que vos clients vivent dans leur propre instantané de la base de données, ce qui serait vrai s'ils avaient une transaction ouverte utilisant le niveau d'isolation REPEATABLE-READ. En d'autres termes, aucune donnée validée après que ce client a commencé sa transaction ne sera visible par ce client.

Une solution de contournement consiste à forcer le démarrage d'une nouvelle transaction. Exécutez simplement COMMIT dans la session client où il semble afficher des données obsolètes. Cela résoudra toute transaction ouverte et la prochaine requête démarrera une nouvelle transaction.

Une autre façon de tester consiste à utiliser une lecture bloquante requête comme SELECT ... FOR UPDATE . Cela lira les données les plus récemment validées, quel que soit le niveau d'isolement des transactions du client. Autrement dit, même si le client avait démarré sa transaction en utilisant REPEATABLE-READ, une lecture de verrouillage se comporte comme s'il avait démarré sa transaction avec READ-COMMITTED.