查询缓存介绍:
我们查询通过网络连接数据库服务器,会受网络带宽的限制,所以我们在应用服务器的内存中开辟块空间,即缓存空间,里面盛放的是多个查询结果。
缓存工作原理:执行查询时,先到缓存中查看有没有,如果有直接返回,没有再去DB中查询,查到的结果先给缓存,再给sql。
MyBatis查询缓存分类:
(1)、一级缓存(Sqlsession缓存):其默认是开启的,无法关闭,作用范围为namespace,生命周期同整个SqlSession相同
(2)、二级缓存:默认关闭,若使用必须开启,作用范围同一级缓存,但是生命周期和整个应用相同
一级缓存:
底层原理:一级缓存的底层实现是一个map,其value是查询结果,而key由三部分构成(hashcode+statementId+SQL语句)。每次select先到缓存中查找key,有则读取value并返回,没有去DB中查找,找到先组建后放到map中。
增删改对一级缓存影响:会刷新(清空)一级缓存【因为数据库修改了,若不刷新会拿到脏数据】