Le cache de premier niveau mybatis et le cache de deuxième niveau sont deux niveaux différents de mécanismes de mise en cache fournis par mybatis. Le cache de premier niveau est le mécanisme de cache activé par défaut dans mybatis. Il s'agit d'un cache local basé sur les threads, et le second. -level cache est basé sur le niveau de l'espace de noms. Le cache peut être partagé par plusieurs objets SqlSession.
Le système d'exploitation de ce tutoriel : système Windows 10, ordinateur Dell G3.
MyBatis est un framework de couche de persistance open source qui fournit des mécanismes de mise en cache pour améliorer les performances des requêtes de base de données. Parmi eux, le cache de premier niveau et le cache de deuxième niveau MyBatis sont deux niveaux différents de mécanismes de mise en cache.
Le cache de premier niveau est le mécanisme de mise en cache activé par défaut dans MyBatis. Il s'agit d'un cache local basé sur les threads. En d’autres termes, chaque objet SqlSession possède son propre cache de premier niveau. Lors de l'exécution d'une opération de requête, MyBatis vérifiera d'abord si la même requête existe dans le cache de premier niveau. Si elle existe, les résultats seront obtenus directement à partir du cache sans interroger la base de données. Cela peut réduire le nombre d'accès à la base de données et améliorer les performances des requêtes.
Le cycle de vie du cache de premier niveau est cohérent avec le cycle de vie de SqlSession. Lorsque la SqlSession est fermée ou que le cache est vidé, le cache de premier niveau sera également vidé. Le cache de premier niveau est activé par défaut. Si vous souhaitez fermer ou vider le cache de premier niveau, vous pouvez appeler la méthode clearCache() de SqlSession.
Bien que le cache de premier niveau puisse améliorer les performances des requêtes, il existe également certains problèmes. Tout d'abord, étant donné que le cache de premier niveau est un cache local basé sur les threads, une incohérence des données peut survenir dans un environnement multithread. Deuxièmement, si des opérations de mise à jour, de suppression ou d'insertion sont effectuées dans la même SqlSession, le cache de premier niveau sera vidé et la base de données sera à nouveau interrogée lors de la requête suivante. Par conséquent, le cache de premier niveau convient aux scénarios monothread avec plus de lectures et moins d'écritures.
Afin de résoudre le problème du cache de premier niveau, MyBatis fournit un cache de deuxième niveau. Le cache de deuxième niveau est basé sur le cache de niveau espace de noms, qui peut être partagé par plusieurs objets SqlSession. Lorsque plusieurs objets SqlSession exécutent la même requête, si les résultats de la requête existent dans le cache de deuxième niveau, les résultats sont obtenus directement à partir du cache sans interroger la base de données.
Le cycle de vie du cache de deuxième niveau est cohérent avec le cycle de vie du Mapper. Lorsque la SqlSessionFactory du mappeur est fermée ou que le cache est vidé, le cache de deuxième niveau sera également vidé. Si vous souhaitez utiliser le cache de deuxième niveau, vous devez le configurer en conséquence dans le fichier de configuration du Mapper.
Par rapport au cache de premier niveau, le cache de deuxième niveau a une applicabilité plus large. Il peut résoudre le problème de l'incohérence des données dans les environnements multithread et convient aux scénarios dans lesquels plusieurs objets SqlSession partagent les mêmes résultats de requête. Cependant, il existe également quelques problèmes avec le cache de deuxième niveau. Tout d'abord, puisque le cache de deuxième niveau est basé sur le niveau d'espace de noms, les caches de deuxième niveau sont indépendants les uns des autres sous différents espaces de noms. Deuxièmement, si une opération de mise à jour, de suppression ou d'insertion est effectuée sous le même espace de noms, le cache de deuxième niveau sera vidé.
En général, le cache de premier niveau et le cache de deuxième niveau sont deux niveaux différents de mécanismes de mise en cache fournis par MyBatis. Le cache de premier niveau est un cache local basé sur des threads, qui convient aux scénarios à thread unique avec plus de lectures et moins d'écritures ; tandis que le cache de deuxième niveau est un cache au niveau de l'espace de noms qui peut être partagé par plusieurs objets SqlSession et est adapté aux scénarios avec multi-threads et scènes de lecture et d’écriture fréquentes. Dans le développement réel, en fonction des besoins spécifiques de l'entreprise et des exigences de performances, un mécanisme de mise en cache approprié peut être sélectionné pour améliorer les performances des requêtes.
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!