缓存(mybatis)

2016-12-30 20:02

什么是查询缓存:

mybaitis也提供了查询缓存,用于减少数据库访问次数,提高了数据库的性能而存在的一种机制。有一级、二级缓存。

缓存(mybatis)0


一级缓存:操作数据库时,会操作会话SqlSession对象,在会话对象中有个内存(数据结构HashMap),用于存储缓存数据。

不同的SqlSession他们之间的缓存数据区域是互补影响的。

二级缓存:Mapper级别的缓存,多个SqlSession去操作同一个Mapper的SQL语句。多个SQLSession操作数据库所得到数据会存储在二级缓存区域,可以共用二级缓存,二级缓存是跨SqlSession的。



缓存(mybatis)1

一级缓存:

第一次发起查询用户id为1的用户信息,先去缓存中找是否有id为1的用户信息,如果没有,会到数据库中查询出来,并存储到一级缓存中。

如果在第一次查询和第二次查询中间有操作事务操作,一级缓存里的数据被自动清空。如果不清除,第二次查询到的还是第一次的数据。为了让缓存中永远存储最新的查询数据,也就是为了避免脏数据。

第二次发起查询用户id为1的用户信息,先去缓存中找是否有id为1的用户信息,查到有,会直接返回出来。


缓存的作用:如果缓存中有需要查询的数据,就不需要去数据库中查找,减少对数据库的访问。