一级缓存(SqlSession会话级别缓存)
默认开启,建议自行关闭。
问题:
1、大型分布式系统、小公司多实例部署同一台机器建议关闭一级缓存,产生脏读,读旧值情况比较大。
二级缓存(命名空间缓存,可以跨会话级别)
问题:
默认不开启,开发管控
1、大型分布式系统、小公司多实例部署同一台机器建议不要开启二级缓存,多表join场景下,有的表可以读到最新的值,但有的表会读到以前的缓存,同样会出现脏读场景。
经验:二级缓存性能很好,但是对开发者有一定的要求,这个要求就是在撰写mapper时候,一定要保证在命名空间里面的单表查询,一切join表场景全部避免,这样可以有效避免脏读场景。
三级缓存(SessionFactory级别缓存,跨应用)
开发自定义选择使用第三方(Redis、guava)