1. Mybatis缓存方案
Mybatis
的缓存机制可以在多个会话之间共享数据,从而提高查询性能
。Mybatis
主要分为两级缓存:
一级缓存
:是sqlsession级别
的缓存,当前作用域为sqlsession,默认开启
,通过<cache>
标签可以配置,只有SQL语句和参数值完全相同的SQL,才可以使用该缓存;
二级缓存
:主要是全局缓存
,多个sqlsession
共享数据,作用域是同一个namespace
下的所有sqlsession,默认是关闭
的,通过cacheEnabled字段可以开启;
查询流程:
先查询二级缓存,在查找一级缓存,最后查找数据库;
缓存清空时机
:执行insert\update\delete方法会清空缓存,或者自己配置缓存失效参数。
2. 多表联合缓存如何使用?-- 不推荐
方案: 使用<cache-ref>
标签,完成多表联合缓存,保证没有脏数据的产生;
存在问题: 全量清空缓存数据
。关联表数据没有更新,也会清空,造成性能的浪费。
解决方案: 自定义缓存策略
。例如:使用Redis,细化Key,可以针对性的清空缓存。