mybaties先查二级缓存还是一级
时间: 2023-10-01 19:11:40 浏览: 44
在MyBatis中,当我们执行一次数据库查询操作时,MyBatis会按照如下顺序进行缓存的查找:
1. 首先,MyBatis会查找当前SqlSession的一级缓存(本地缓存),如果能够找到对应的缓存数据,则直接返回。
2. 如果一级缓存中没有对应的缓存数据,则MyBatis会查找当前SqlSession的二级缓存(全局缓存),如果能够找到对应的缓存数据,则将其添加到一级缓存中并返回。
3. 如果二级缓存中也没有对应的缓存数据,则MyBatis会去执行对应的数据库查询操作,并将查询结果添加到一级缓存和二级缓存中供下次使用。
因此,MyBatis的缓存机制是先查一级缓存再查二级缓存的。需要注意的是,如果我们在执行数据库更新操作(例如insert、update、delete)时,就会清空当前SqlSession的一级缓存和二级缓存,避免脏数据的产生。
相关问题
mybatis先查一级缓存还是二级缓存
MyBatis先查找一级缓存,如果在一级缓存中找不到对应的数据,才会去查找二级缓存。一级缓存是指在同一个 SqlSession 中,执行相同 SQL 语句时,会将查询结果缓存到内存中,以提高查询效率。二级缓存是指在多个 SqlSession 中,执行相同 SQL 语句时,会将查询结果缓存到共享的缓存区域中,以提高查询效率。
msql 一级缓存 二级缓存
MYSQL有一级缓存和二级缓存。一级缓存也称为本地缓存,是在sqlSession级别的缓存。一级缓存是一直开启的,与数据库同一次会话期间查询到的数据会放在本地缓存中。当再次查询相同的数据时,会直接从本地缓存中获取,而不需要再次访问数据库。
二级缓存是在一级缓存的基础上进行的缓存,它是跨sqlSession的缓存。当一级缓存中没有命中时,会去查找二级缓存。如果二级缓存中存在相同的数据,则直接从二级缓存中获取数据。如果二级缓存中没有命中,则会去访问数据库,并将查询到的数据放入二级缓存中,以供后续使用。
需要注意的是,二级缓存是需要手动配置的,而一级缓存是默认开启的。