码上敲享录 > Mybatis面试题 > MyBatis的缓存机制是什么?缓存的类型有哪些?

MyBatis的缓存机制是什么?缓存的类型有哪些?

上一章章节目录下一章 2023-07-16已有152人阅读 评论(0)

MyBatis提供了缓存机制来提高数据库访问的性能。它主要通过缓存数据结果集来减少重复查询数据库的次数。


MyBatis的缓存机制包括以下几个方面:


1. 一级缓存(Local Cache):默认情况下,MyBatis开启了一级缓存,它是SqlSession级别的缓存。在同一个SqlSession中,如果执行同样的查询,MyBatis会将查询结果缓存起来。当再次执行相同的查询时,MyBatis会优先从缓存中获取结果,减少对数据库的访问。


2. 二级缓存(Second Level Cache):二级缓存是全局范围的缓存,可以被多个SqlSession共享。二级缓存需要手动配置并启用,在多个SqlSession执行相同的查询时,二级缓存可以提供结果的共享。二级缓存的数据存储在Mapper命名空间级别,即同一个Mapper下的查询结果可以被共享。


3. 缓存策略配置:MyBatis允许配置缓存的策略,包括缓存淘汰机制、缓存刷新机制等。可以通过配置文件或注解方式对不同的Mapper或查询进行不同的缓存配置。


MyBatis支持以下几种类型的缓存:


1. Perpetual Cache(永久缓存):Perpetual Cache是MyBatis默认的缓存实现,它使用HashMap来存储缓存数据。


2. LruCache(最近最少使用缓存):LruCache是一种基于最近最少使用算法的缓存实现,用于将一部分缓存数据存储在内存中,当超出一定的阈值时,会将最近最少使用的数据从缓存中移除。


3. FifoCache(先进先出缓存):FifoCache是一种基于先进先出算法的缓存实现,它按照元素的插入顺序进行缓存数据的操作。


4. SoftCache(软引用缓存):SoftCache是一种使用软引用(SoftReference)来管理缓存数据的实现,当内存不足时,JVM会根据GC回收策略自动回收软引用对象,从而释放内存空间。


5. WeakCache(弱引用缓存):WeakCache是一种使用弱引用(WeakReference)来管理缓存数据的实现,当该对象没有被其他强引用持有时,JVM会根据GC回收策略自动回收弱引用对象。


上述缓存类型都是MyBatis内置的实现方式,同时也可以扩展自定义的缓存实现。


需要注意的是,缓存可以提高查询性能,但同时也会带来数据一致性的考虑。在更新数据时,需要及时清除缓存,以保证缓存数据与数据库数据的一致性。可以通过配置刷新缓存的方式,在数据更新后自动刷新缓存,或通过手动调用的方式进行缓存的清除。


向大家推荐《Activiti工作流实战教程》:https://xiaozhuanlan.com/activiti
0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交