MyBatis学习笔记——14MyBatis查询缓存(一级缓存,二级缓存)

完整学习路线:https://blog.csdn.net/qq_40163148/article/details/89668242

为什么需要缓存?

为了减轻数据库压力,提高数据库性能

一级缓存和二级缓存的作用范围

MyBatis学习笔记——14MyBatis查询缓存(一级缓存,二级缓存)

1.一级缓存(默认开启)

在操作数据库时需要构建sqlSession对象,在对象中有一个数据结构(hashMap)用于存储缓存数据,不同的SqlSession之间的缓存数据区域(HashMap)互不影响

一级缓存的作用范围:sqlSession范围

MyBatis学习笔记——14MyBatis查询缓存(一级缓存,二级缓存)

第一次查询id为1的用户写入sqlsession发送sql语句

第二次查询id为1的用户读取sqlsesssion不发送sql语句

当对数据库进行更改时清除缓存即commit,这样做的目的是为了避免读脏数据

MyBatis学习笔记——14MyBatis查询缓存(一级缓存,二级缓存)
MyBatis学习笔记——14MyBatis查询缓存(一级缓存,二级缓存)

2.二级缓存(默认开启,不过需要在每个mapper里重新开启)

二级缓存的作用范围:全局 但是每个mapper(namespace)拥有自己的二级缓存区域(它是跨sqlsession的),多个SqlSession公用二级缓存

二级缓存需要注意的几点

MyBatis学习笔记——14MyBatis查询缓存(一级缓存,二级缓存)

1.全局二级缓存默认开启

MyBatis学习笔记——14MyBatis查询缓存(一级缓存,二级缓存)

2.每个mapper开启缓存

MyBatis学习笔记——14MyBatis查询缓存(一级缓存,二级缓存)

继承Serializable接口

3.给bean进行序列化

MyBatis学习笔记——14MyBatis查询缓存(一级缓存,二级缓存)

MyBatis学习笔记——14MyBatis查询缓存(一级缓存,二级缓存)

Cache Hit Ratio [com.lipengge.mbt.mapper.OrderCustomMapper]: 0.0 代表缓存命中率第一次发出sql语句 没有缓存没有命中

Cache Hit Ratio [com.lipengge.mbt.mapper.OrderCustomMapper]: 0.5 代表命中率为50% 第二次有缓存所以命中

当对数据库进行更改时清除缓存即commit,这样做的目的是为了避免读脏数据,之后查询又会重新发送sql语句

相关文章:

  • 2022-12-23
  • 2021-11-19
  • 2021-10-01
  • 2022-01-07
  • 2021-11-19
  • 2021-04-27
  • 2021-12-20
猜你喜欢
  • 2022-12-23
  • 2021-09-18
  • 2021-12-06
  • 2021-09-17
  • 2022-12-23
  • 2022-12-23
  • 2021-07-05
相关资源
相似解决方案