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语句,这时,二级缓存才会命中

mybatis ehcache二级缓存命中率为0的原因,以及一级缓存与二级缓存之间的顺序_第1张图片

查询的顺序:

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

​​​​​​​

你可能感兴趣的:(笔记)