首页 > 编程知识 正文

mybatis的缓存有几种,mybatis如何开启二级缓存

时间:2023-05-04 07:25:50 阅读:32504 作者:4418

缓存作用:减少IO,提高系统性能。 mybatis提供l1缓存和l2缓存

一级缓存—一级缓存是sqlsession级别的缓存,共享同一sqlsession中的缓存,不同的sqlsession互不影响。 sqlsession对象使用HashMap缓存数据。 机制:用户启动sql查询时,如果不在缓存中,则从数据库中搜索查询结果,并将查询结果保存到主缓存中。 在同一sqlsessIOn上,再次启动sql查询时,如果它位于缓存中,则直接从缓存中检索信息,而不访问数据库。 (这样磁盘io就会减少。 如果其他sqlsession中途执行了commit操作(插入、更新、删除),请清空sqlsession的主缓存以避免脏读。

示例: 1、l1缓存是mybatis的默认缓存(无需设置)

2、配置日志(用于查看sql查询语句) )。

3、对同一员工用一个sqlsession进行三次咨询

4、可以看出,sql语句只执行了一次,在第二次、第三次查询时,如果在主缓存中找到,就不会去数据库查询。

禁用一级缓存:查询条件因sqlsession对象而异。 即,如果通过查询之间的插入/删除/更新等操作在缓存中找不到查询,则手动清除一级缓存

l2缓存—l2缓存是namespace级别的缓存,多个sqlsession共享L2缓存。 工作原理:

示例: 1、在config.xml中打开l2缓存

设置! -打开l2缓存- -在setting name=' cache enabled ' value=' true '/settings特定mapper.xml中打开l2缓存

! -打开此映射器的namespace下的辅助缓存--cache eviction=' LRU ' flush interval=' 10000 '/http://www.Sina.com/http://www. http://www.Sina.com/LRU (leastrecentlyused )按照最近最少使用的、最长时间未使用的目标FIFO ) First对象进入缓存的顺序依次为他们的SOFT、软删除基于垃圾回收器状态和软引用规则的对象WEAK、弱引用,更主动地删除基于垃圾回收器状态和弱引用规则的对象。 这里采用LRU,删除最长时间未使用的对象。 http://www.Sina.com/http://www.Sina.com /此处设置了100秒刷新。 如果未设置此选项,则在执行SQL时刷新缓存。 3358 www.Sina.com/http://www.Sina.com /正整数。 表示缓存中可以存储的最大对象数,不要设置得太大。 一过大会就会引起内存溢出。 (这里有1024个对象) http://www.Sina.com/http://www.Sina.com /缓存数据是只读的,不可修改。 这样设置的好处是可以快速读取缓存。 缺点是不能修改缓存,他的默认值为false。 2不能更改。 使用不同的sqlsession执行两次查询。 (在提交第一个查询之前,辅助缓存中不存在部门信息。 否则,部门信息只存在于会话1的主缓存中。 )

3、可以看出,sql在session1查询时运行一次,session2查询时直接从辅助缓存中提取数据

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。