mybatis ehcache二级缓存命中率为0的原因,以及一级缓存与二级缓存之间的顺序

一级缓存针对SqlSession进行缓存

二级缓存针对mapper进行缓存,不管是不是相同的session,只要mapper的namespace相同,就会共享缓存

那么在同一个session下,执行同一个select语句时,Cache Hit Ratio [Mapper]: 0.0,耳机缓存的命中率为0那?这里要讲解一下二级缓存的缓存什么时候存入了:只有当当前的session.close()时,该session的数据才会存入二级缓存.在同一session下时,肯定没有执行.close()关闭session,自然也就没有存入二级缓存.第二次执行却没有重新发送sql语句,是因为第二次调用的是一次缓存中的数据.

如果想让二级缓存命中率不为0,需要先开启一个session,执行一个sql语句,然后关闭该session,然后在创建一个新的session,执行相同的sql语句,这时,二级缓存才会命中

查询的顺序:

  1. 二级缓存
  2. 一级缓存
  3. 数据库

​​​​​​​

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值