JavaWeb学习

缓存查询

2018-05-27  本文已影响16人  幻影翔

缓存的意义

一级缓存


第一次发出一个查询sql,sql查询结果写入sqlsession的一级缓存中,缓存使用的数据结构是一个map<key,value>
key:hashcode+sql+sql输入参数+输出参数(sql的唯一标识)
value:用户信息,同一个sqlsession再次发出相同的sql,就从缓存中取不走数据库。如果两次中间出现commit操作(修改、添加、删除),本sqlsession中的一级缓存区域全部清空,下次再去缓存中查询不到所以要从数据库查询,从数据库查询到再写入缓存。

每次查询都先从缓存中查询:


如果缓存中查询到则将缓存数据直接返回。

如果缓存中查询不到就从数据库查询:


二级缓存


二级缓存的范围是mapper级别(mapper同一个命名空间),mapper以命名空间为单位创建缓存数据结构,结构是map<key、value>。

每次查询先看是否开启二级缓存,如果开启从二级缓存的数据结构中取缓存数据,


如果从二级缓存没有取到,再从一级缓存中找,如果一级缓存也没有,从数据库查询。

上一篇 下一篇

猜你喜欢

热点阅读